IOS
1.SDK集成
1.1名词解释
authToken | 身份认证接口获取的access_token |
---|---|
DeviceSerial | 设备序列号 |
CameraNo | 设备通道号 |
DeviceSerial+CameraNo | 摄像头唯一标志 |
1.2适用范围
1.3集成准备
1.4快速集成

1.
2.
注意区分大小写。

3.
4.
5.
相册权限: 如果需要使用开放平台播放器录像和截图并保存的功能,就需要配置相册权限。
<key>NSPhotoLibraryUsageDescription</key><string>需要使用手机相册</string>
<key>NSPhotoLibraryAddUsageDescription</key><string>需要使用手机相册</string>
麦克风权限: 如果需要使用设备对讲功能,就需要配置麦克风权限。务必在发起对讲前向iOS系统申请麦克风权限 ,否则将导致第一次对讲异常。
<key>NSMicrophoneUsageDescription</key> <string>需要使用手机麦克风</string>
2 基础功能
2.1 功能介绍
功能 | 说明 |
---|---|
视频预览 | 直播预览 |
声音 | 开启和关闭声音 |
设备对讲 | 对讲(包含半双工对讲和全双工对讲) |
直播边播边录 | 播放过程中录像 |
清晰度切换 | 流畅、均衡、高清切换 |
直播边播边截屏 | 播放过程中截屏 |
设备控制接口(云台、变倍画面) | 云台控制 |
查看回放(SD卡、云存储) | 回放 |
直播、回放边播边截屏 | 播放过程中截屏 |
可视对讲 | 可视对讲 |
2.2 函数说明
2.2.1初始化SDK
/**
* 初始化
*
* @param authToken 服务端下发的access_token
* @param completion 异步结果回调
* @return YES/NO
*/
+ (BOOL)initSDKWithOAuthToken:(NSString *)authToken completion:(void(^)(BOOL succeed, NSError *error))completion;
2.2.2视频预览
/**
* 开始预览
*
* @param view 播放视图
* @param deviceSerial 设备序列号
* @param channelNo通道号
* @param verifyCode 验证码,加密设备用到
* @param completion 开始预览结果
*/
+ (void)startRealPlayinView:(UIView *)view
deviceSerial:(NSString *)deviceSerial
channelNo:(NSInteger) channelNo
verifyCode:(NSString *)verifyCode
completion:(void(^)(BOOL succeed, NSError *error))completion;
2.2.3设备对讲
/**
* 开始对讲
* @param completion 回调block,succeed表示设置成功
*/
+ (BOOL)startVoiceTalk:(void(^)(BOOL succeed, NSError *error))completion;
2.2.4本地直播流录像功能
/**
* 开始本地录像功能(SDK处理存储过程)
* * @param path 文件存储路径
* * @return YES/NO
*/
+ (BOOL)startLocalRecordWithPath:(NSString *)path;
2.2.5直播画面抓图
/**
* 直播画面抓图
* * @param quality 抓图质量(0~100),数值越大图片质量越好,图片大小越大
* * @return image */
+ (UIImage *)capturePicture:(NSInteger)quality;
2.2.6切换清晰度
/**
* 设置设备通道的清晰度
*
* @param deviceSerial 设备序列号
* @param channelNo 通道号
* @param videoLevel 通道清晰度,0-流畅,1-均衡,2-高清,3-超清
* @param completion 回调block,无error表示设置成功
* @see 如果是正在播放时调用该接口,设置清晰度成功以后必须调用stopRealPlay再调用startRealPlay重新取流才成完成画面清晰度的切换。
*
* @return operation
*/
+ (NSOperation *)setVideoLevel:(NSString *)deviceSerial channelNo:(NSInteger) channelNo
videoLevel:(EZVideoLevelType)videoLevel
completion:(void (^)(NSError *error))completion;
2.2.7 PTZ 云台控制
/**
* PTZ 控制接口
*
* @param deviceSerial 设备序列号
* @param channelNo 通道号
* @param command ptz控制命令
* @param action 控制启动/停止
* @param resultBlock 回调block,当error为空时表示操作成功 *
* @return operation
*/
+ (NSOperation *)controlPTZ:(NSString *)deviceSerial channelNo:(NSInteger) channelNo
command:( CloudVideoPTZCommand)command
action:( CloudVideoPTZAction)action
result:(void (^)(NSError *error))resultBlock;
2.2.8远程回放 操作
/**
* 开始云存储远程回放,异步接口,返回值只是表示操作成功,不代表播放成功
* @param cloudFile 云存储文件信息
* @param deviceSerial 设备序列号
* @param channelNo 通道号
* @param verifyCode 验证码,加密设备用到
* @param completion 结果
* @return YES/NO
*/
+ (BOOL)startPlaybackFromCloud:(EZCloudRecordFile *)cloudFile inView:(UIView *)view
deviceSerial:(NSString *)deviceSerial
channelNo:(NSInteger) channelNo
verifyCode:(NSString *)verifyCode
completion:(void(^)(BOOL succeed, NSError *error))completion;;
/**
* 开始远程SD卡回放,异步接口,返回值只是表示操作成功,不代表播放成功
*
* @param deviceFile SD卡文件信息
* @param deviceSerial 设备序列号
* @param channelNo 通道号
* @param verifyCode 验证码,加密设备用到
* @param completion 结果
* @return YES/NO
*/
+ (BOOL)startPlaybackFromDevice:(EZDeviceRecordFile *)deviceFile
inView:(UIView *)view
deviceSerial:(NSString *)deviceSerial
channelNo:(NSInteger) channelNo
verifyCode:(NSString *)verifyCode
completion:(void(^)(BOOL succeed, NSError *error))completion;
/** SD卡回放专用接口,倍数回放
@param rate 回放倍率,见EZPlaybackRate,目前设备存储回放支持1、2、4、8、1/2、1/4、1/8倍数
@return YES/NO
*/
+ (BOOL)setPlaybackRate:(EZPlaybackRate)rate;
/** 云存储回放专用接口,倍数回放
@param rate 回放倍率,见EZCloudPlaybackRate,目前云存储支持1、4、8、16、32倍数 @return YES/NO */
+ (BOOL)setCloudPlaybackRate:(EZCloudPlaybackRate)rate;
2.2.9 可视对讲操作
/** 接听
@param completion 接听结果
*/
+ (void)answer:(CloudVoiceTalkParamsModel *)paramsModel
completion:(void(^)(BOOL succeed, NSError *error))completion;
/** 挂断
@param completion 挂断结果
*/
+ (void)hangUp:(CloudVoiceTalkParamsModel *)paramsModel
completion:(void(^)(BOOL succeed, NSError *error))completion;
/** 拒接
@param completion 拒接结果
*/
+ (void)reject:(CloudVoiceTalkParamsModel *)paramsModel
completion:(void(^)(BOOL succeed, NSError *error))completion;
/** 响铃超时
@param completion 结果
*/
+ (void)bellTimeout:(CloudVoiceTalkParamsModel *)paramsModel
completion:(void(^)(BOOL succeed, NSError *error))completion;
1.
2.
2.2.10 局域网设备预览
1. 在同一局域网下,搜索到该设备或者手动添加该设备。
2. 判断该设备是否激活,没激活的话需要激活。
3. 进行登录操作,登陆成功后,判断该设备是否多通道。
4. 局域网预览相关操作。
2.2.10.1 找到该设备信息
+ (BOOL) startLocalSearch:(void(^)(EZSADPDeviceInfo *device,NSError *error)) searchCallback
接口进行搜索,搜索到一台设备就回调一次EZSADPDeviceInfo
信息。1.搜索到的
EZSADPDeviceInfo
中的序列号是全信息(例如CS-C6CN-3B2WFR0120181201CCCHC74540922),真正的序列号为最后几位(例如C74540922),可根据这个进行判断相对应的设备。2.搜索接口可能长时间没有返回结果(原因:1.不在同一局域网;2.该局域网下没有设备;3.扫描超时;),这时候建议开发者设置一个超时时间或者重试机制。
3.记得在功能使用结束后或者页面的dealloc处,调用
[EZHCNetDeviceSDK stopLocalSearch]
停止搜索。4.建议在调用
startLocalSearch
前请调用下stopLocalSearch
方法。 //局域网设备搜索开始接口
[EZHCNetDeviceSDK startLocalSearch:^(EZSADPDeviceInfo *device, NSError *error) {
if (!device) {
return;
}
if ([self containtInfo:device]) {
return;
}
[self.deviceList addObject:device];
[self.tableView reloadData];
}];
//局域网设备搜索停止接口
[EZHCNetDeviceSDK stopLocalSearch];
2.2.10.2 激活设备
startLocalSearch
接口返回的EZSADPDeviceInfo
,通过actived字段判断设备是否已激活,如果未激活需要先去激活 EZSADPDeviceInfo *info = [self.deviceList objectAtIndex:[indexPath row]];
if (info.actived) { // 设备已激活
[self loginWithDevice:info];
} else { // 设备未激活
[self activeWithDevice:info];
}
//激活可能为耗时处理过程,可考虑异步处理
BOOL ret = [EZHCNetDeviceSDK activeDeviceWithSerial:deviceInfo.deviceSerial pwd:pwd];
2.2.10.3 局域网登录
/**
登录局域网设备
@param userName 用户名
@param pwd 用户密码
@param ipAddr 设备ip地址
@param port 设备端口号
@return 登录错误时返回nil
*/
[EZHCNetDeviceSDK loginDeviceWithUerName:userName
pwd:pwd
ipAddr:deviceInfo.localIp
port:deviceInfo.localPort];
2.2.10.4 是否多通道
if (self.loginedInfo.channelCount + self.loginedInfo.dChannelCount > 1) {
[self go2CameraListWithInfo:self.loginedInfo];
} else {
[self go2LocalRealPlayWithInfo:self.loginedInfo];
}
2.2.10.5 局域网预览
/**
* 开始预览
*
* @param view 播放视图
* @param userId 用户id,登录局域网设备后获取
* @param channelNo 通道号
* @param streamType 码流类型 1:主码流 2:子码流
* @param completion 开始预览结果
*/
+ (void)startRealPlayinView:(UIView *)view
userId:(NSInteger)userId
channelNo:(NSInteger)channelNo
streamType:(NSInteger)streamType
completion:(void(^)(BOOL succeed, NSError *error))completion;
//开启预览
[LanVideoOpenSDK startRealPlayinView:self.playerView userId:self.deviceInfo.userId channelNo:self.cameraNo streamType:1 completion:^(BOOL succeed, NSError * _Nonnull error) {
[self.view makeToastCenter:@"开始预览"];
}];
//开启声音
[LanVideoOpenSDK openSound];
//关闭声音
[LanVideoOpenSDK closeSound];
//开始录制
[LanVideoOpenSDK startLocalRecordWithPath:videoPath];
//停止录制
[LanVideoOpenSDK stopLocalRecord:^(BOOL ret) {}];
//抓图
[LanVideoOpenSDK capturePicture:100];
3 常见错误码
错误码 | 错误信息 |
---|---|
10110 | SDK初始化失败 |
10111 | SDK未初始化,请初始化 |
10150 | 同步信令失败 |
10151 | 获得可视对讲通话状态异常 |
10101 | 服务器返回数据异常 |
10100 | 服务器异常 |
10102 | 接口调用过于频繁 |
10125 | token失效,请刷新 |
10300 | 录像片段回放结束 |
4 常见问题(FAQ)
2)、出现预览时程序崩溃问题,可能是由于和第三方库冲突导致,建议尝试使用动态库。
修改于 2022-05-20 07:42:15