• 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    平台需要提示的错误描述    
  • 相关阅读:
    贪心算法
    分治法
    递归法
    查找二 树与图的搜索
    (转载)查找三 哈希表的查找
    (转载)查找一 线性表的查找
    4.写出完整版的strcpy函数
    3.strcpy使用注意(3)
    2.strcpy使用注意(2)
    1.strcpy使用注意
  • 原文地址:https://www.cnblogs.com/qianLL/p/6652104.html
Copyright © 2020-2023  润新知