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 = ,
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 说明
Need modify password 初始密码登录时需要修改密码
Need modify password 密码强度不符合平台要求修改密码
Need modify password 密码过期修改密码
Password error 密码错误
Session过期,请重新登录
Exception:具体问题
平台需要提示的错误描述
iOS 中集成海康威视 摄像视频的更多相关文章
- 如何在ios中集成微信登录功能
在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...
- iOS中集成ijkplayer视频直播框架
ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijk ...
- 在Android和iOS中集成flutter
flutter可能是未来跨平台开发的又一技术框架,那么对于一个app,我们不可能完全用flutter来开发,那么就意味着我们需要在已有的Android和iOS代码中去集成flutter.目前这一技术还 ...
- iOS 中集成百度echarts3.0
突然项目中要用到图表,所以就用了百度的echarts,然后就是网上搜了一下,由于本人的JS不是很熟悉,但是研究了一下还是做出来了,其实也不是很难 最后做的效果大概如下图这种,由于界面上没调整,所以粗糙 ...
- iOS:集成ijkplayer视频直播
介绍: ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集 ...
- 视频云SDK iOS持续集成项目实践
1. 前言 2016年, 我们维护的 iOS推流播放融合SDK KSYLive_iOS 在github上发布了40多个版本, 平均两周发布一个新版本, 经历了最初痛苦的全手动版本构建和维护, 到后来慢 ...
- iOS中支付宝集成
iOS中支付宝集成 如今各种的App中都使用了三方支付的功能,现在将我在使用支付宝支付集成过程的心得分享一下,希望对大家都能有所帮助 要集成一个支付宝支付过程的环境,大致需要: 1>公司:先与支 ...
- iOS原生项目中集成React Native
1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...
- react native 之 在现有的iOS工程中集成react native
在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...
随机推荐
- Ubuntu14.04 64bit下Caffe + CUDA 6.5安装详细步骤
不多说,直接上干货! 笔者花了很长时间才装完,主要是cuda安装和opencv安装比较费劲,cuda找不到32位的安装包只好重装64位的ubuntu系统,opencv 也是尝试了很久才解决,这里建议用 ...
- jQuery操作Form表单元素
Web开发中常常须要操作表单,form表单元素有select.checkbox.radio.textarea.button.file.text.hidden.password等. 当中checkbox ...
- 10601 - Cubes(Ploya)
UVA 10601 - Cubes 题目链接 题意:给定正方体12条棱的颜色,要求用这些棱能组成多少不同的正方体 思路:利用ploya定理去求解,分类讨论,正方体一共24种旋转.相应的旋转方式有4种: ...
- 转载 Url编码
http://www.cnblogs.com/artwl/archive/2012/03/07/2382848.html 混乱的URI编码 JavaScript中编码有三种方法:escape.enco ...
- Java 负载均衡
什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助.通过某种 负载分 ...
- 【转】Java 并发编程:核心理论
并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能.它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰.思维缜密,这样才能写出高效.安全.可靠的多线程并发程序.本系 ...
- codeforces round 417 div2 补题 CF 812 A-E
A Sagheer and Crossroads 水题略过(然而被Hack了 以后要更加谨慎) #include<bits/stdc++.h> using namespace std; i ...
- python编写猜拳代码
一.项目要求: 电脑随机出拳和用户猜拳三次.胜利条件如下: (1)(石头 胜 剪刀) (2)(剪刀 胜 布) (3)(布 胜 石头) 二.代码 #!/usr/bin/env python # -*- ...
- Linux CentOS 6.5中安装与配置Tomcat-8方法
安装环境:CentOS-6.5 安装方式:源码安装 软件:apache-tomcat-8.0.0.RC3.tar.gz 下载地址:http://tomcat.apache.org/download-8 ...
- 获取http请求的响应状态
import urllib.request url="http://www.baidu.com" #返回一个对象 response=urllib.request.urlopen(u ...