iOS 中集成海康威视 摄像视频
本文原文地址 http://www.cnblogs.com/qianLL/p/6652104.html
一.要导入相关的库,注意 这里比较坑的是 要用和他一样的 如果开始的工程中用了AFN或者MJExtentsion 的话 自己最好删除了,不然包很多错误,直接把他的库导入进去即可
二,在Other Linker Flags 中要设置 -Objc
三,要初始化MSP的地址与端口才可以进行视频播放的相关组件
[[MCUVmsNetSDK shareInstance] configMspWithAddress:服务器地址 port:端口号]; VP_InitSDK();
四,iOS 9以上要设置 在info.plist文件中设置支持HTTP
五,只支持真机调试
六,在调用摄像头之前,要先登录自己账号,方法在下面
七,注意的是,bitcode 要设置为No,切记,库一定要和他用一样的
接口说明 MSP的IP端口配置 /** * 初始化msp的IP与端口 * * @param address msp的IP地址 * @param port msp的端口 */ - (void)configMspWithAddress:(NSString *)address port:(NSString *)port; 登录接口 /** * 登录接口 * * @param servAddr [IN]服务器地址 * @param sessionID [IN]会话ID * @param doorId [IN]门禁ID * @param groupID [OUT]监控点详细信息 */ - (void)loginMspWithUsername:(NSString *)username password:(NSString * )password success:(void (^)(id object))success failure:(void (^)( NSError *error))failure; 注销接口 /** * 登出接口 */ - (void)logoutMsp:(void (^)(id object))success failure:(void (^)(NSError *error))failure; 获取资源接口 /** * 获取根节点 * @param sysType 获取类型 1:视频 2:门禁 * @param success 成功回调函数 * @param failure 失败回调函数 */ - (void)requestRootNodeWithSysType:(NSInteger)sysType success:(void (^)( id object))success failure:(void (^)(NSError *error))failure; /** * 获取资源 * * @param sysType 资源类型 1:视频 2:门禁, * @param nodeType 当前节点类型 1:控制中心 2:区域 * @param currentID 请求获取子资源的节点的ID * @param numPerPage 每页获取数量 * @param curPage 当前第几页 * @param success 成功回调函数 * @param failure 失败回调函数 */ - (void)requestResourceWithSysType:(NSInteger)sysType nodeType:(NSInteger)nodeType currentID:(NSString *)currentID numPerPage:(NSInteger)numPerPage curPage:(NSInteger)curPage success:(void (^)( id object))success failure:(void (^)(NSError *error))failure; 预览相关接口 /** * 开始预览 * * @param cameraSyscode 监控点syscode * @param type 预览画质 * @param playView 预览view */ - (void)startRealPlay:(NSString *)cameraSyscode videoType:(VP_STREAM_TYPE)type playView:(UIView *)playView complete:(void(^)(BOOL finish, NSString *message))complete; /** * 停止预览 */ - (BOOL)stopRealPlay; /** * 抓图 */ - (BOOL)capture:(VPCaptureInfo *)captureInfo; /** * 开始录像 * * @return 录像是否成功 */ - (BOOL)startRecord:(VPRecordInfo *)recordInfo; /** * 停止录像 * * @return 停止录像是否成功 */ - (BOOL)stopRecord; /** * 打开声音 * * @return 返回打开声音是否成功 */ - (BOOL)openAudio; /** * 关闭声音 * * @return 关闭声音是否成功 */ - (BOOL)turnoffAudio; /** * 开始云台控制 * * @param ptzCommond 云台命令 * @param param1 云台参数1:云台转动时转动速度(1-10)或者 预置点操作时预置点编号 或者 3d放大时起始点x坐标 */ - (void)startPtzControl:(NSInteger)ptzCommond withParam1:(NSInteger)param1; - (void)stopPtzControl:(NSInteger)ptzCommond withParam1:(NSInteger)param1; 回放相关接口 /** * 开始回放 * * @param cameraSyscode 监控点syscode * @param playView 回放view */ - (void)startPlayBack:(NSString *)cameraSyscode playView:(UIView *)playView date:(NSDate *)date; /** * 更新当前播放的时间 * * @param currentTime 当前时间 */ - (void)updatePlayBackTime:(TIME_STRUCT)currentTime; /** * pickerView更新播放时间和录像位置 * * @param date 录像时间 * @param pos 录像位置 */ - (void)pickerStartPlayBack:(NSDate *)date currentPos:(NSString *)pos; /** * 停止回放 */ - (BOOL)stopPlayBack; /** * 获取全局osd时间 * * @return 返回全局时间 */ - (NSTimeInterval)getOsdTime; /** * 抓图 */ - (BOOL)capture:(VPCaptureInfo *)captureInfo; /** * 暂停播放 * */ - (BOOL)pausePlayBack; /** * 重启播放 */ - (BOOL)resumePlayBack; /** * 开始录像 * * @return 录像是否成功 */ - (BOOL)startRecord:(VPRecordInfo *)recordInfo; /** * 停止录像 * * @return 停止录像是否成功 */ - (BOOL)stopRecord; /** * 打开声音 * * @return 返回打开声音是否成功 */ - (BOOL)openAudio; /** * 关闭声音 * * @return 关闭声音是否成功 */ - (BOOL)turnoffAudio; 实体类 监控点信息类MCUCameraInfo #import <Foundation/Foundation.h> @interface MCUCameraInfo : NSObject @property (nonatomic, copy) NSString *sysCode; @property (nonatomic, copy) NSString *cameraID; @property (nonatomic, copy) NSString *cameraName; @property (nonatomic, copy) NSString *userCapability; /**<用户权限 1代表实时预览,2代表录像回放,3代表云台控制 */ @property (nonatomic, copy) NSString *deviceID; /**< 对应的设备ID */ @property (nonatomic, copy) NSString *gbSysCode; /**< 级联的时候用gbSysCode组装播放的URL,用户不必关心,可调用MCUVmsNetSDK的getRealPlayURLWithStreamType:(VP_STREAM_TYPE)type cameraInfo:(MCUCameraInfo *)cameraInfo */ @property (nonatomic, copy) NSString *guid; @property (nonatomic, assign) NSInteger type; @property (nonatomic, copy) NSString *recordPos; /**< 录像保存的位置 */ @property (nonatomic, assign) NSInteger channelNo; /**< 通道号 */ @property (nonatomic, assign) NSInteger deviceNetID; @property (nonatomic, assign) BOOL cascadeFlag; /**< 级联表示,0表示非级联,1表示级联 */ @property (nonatomic, assign) BOOL isOnline; /**< 是否在线*/ @end 设备信息类 #import <Foundation/Foundation.h> @interface MCUDeviceInfo : NSObject @property (nonatomic, copy) NSString *username; /**< 设备的用户名 */ @property (nonatomic, copy) NSString *password; /**< 设备的密码 */ @property (nonatomic, copy) NSString *deviceName; /**< 设备的名字 */ @property (nonatomic, copy) NSString *indexCode; @end 资源节点类 #import <Foundation/Foundation.h> typedef NS_ENUM(NSUInteger, ResourceNodeType) { ResourceNodeTypeControlCenter = 1, ResourceNodeTypeRegion, ResourceNodeTypeCamera }; @interface MCUResourceNode : NSObject @property (nonatomic, copy) NSString *nodeID; /**< 节点ID , nodeType为3时,其相当于cameraID */ @property (nonatomic, copy) NSString *parentNodeID; /**< 父节点ID */ @property (nonatomic, copy) NSString *nodeName; /**< 节点名称 nodeType为3时,其相当于cameraName */ @property (nonatomic, copy) NSString *sysCode; /**< 监控点的sysCode,此处不为空 */ @property (nonatomic, copy) NSString *userCapability; /**< 监控点权限控制,@"1,2,4", 1代表有预览权限,2代表有录像回放权限,4代表有云台控制权限 */ @property (nonatomic, assign) ResourceNodeType nodeType; /**< nodeType:1对应平台里的控制中心,2代表平台里的区域, 3,对应监控点 */ @property (nonatomic, assign) BOOL cascadeFlag; /**< 监控点是否为级联,0非级联,1为级联 */ @property (nonatomic, assign) BOOL isOnline; /**< 监控点是否在线,0不在线,1在线 */ @end 错误码汇总 Status Description 说明 202 Need modify password 初始密码登录时需要修改密码 203 Need modify password 密码强度不符合平台要求修改密码 204 Need modify password 密码过期修改密码 205 Password error 密码错误 205 Session过期,请重新登录 230 Exception:具体问题 231 平台需要提示的错误描述