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 ...
随机推荐
- oracle--Windows不能在本地计算机启动OracleDBConsoleorcl .错误代码1
安装完数据库后能够启动,重新启动电脑后,手动启动就会报错. 现象: Windows 不能在 本地计算机 启动 OracleDBConsoleorcl.有关很多其它信息.查阅系统事件日志.假设这是非 M ...
- iOS开发——高级篇——Runloop相关一
一.什么是runLoop 1.说白了,runloop就是运行循环 2.runloop,他是多线程的法宝 通常来讲,一个线程一次只能执行一个任务,执行完之后就退出线程.但是,对于主线程是不能退出的,因此 ...
- VS2013如何调用别人发布的WebService程序
这篇经验会告诉我们如何调用别人发布的WebService,并且需要注意的事项.现在就拿获取天气预报的接口举例,因为文中不允许有链接,所以在下文图中有WebService链接的地址. 工具/原料 VS2 ...
- 转:目前为止最全的微信小程序项目实例
wx-gesture-lock 微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...
- [NOI 2012] 美食节
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2879 [算法] 首先 , 将每种食物建一个点 , 将每位厨师做的每一道菜建一个点 建 ...
- Splay 区间反转
同样的,我们以一道题来引入. 传送门 这次的任务比较少,只要求进行区间反转.区间反转? 这个好像用啥都是O(n)的吧……(这次vector,set也救不了你了) 我们来使用splay解决这个问题.我们 ...
- fzu 2150(bfs)
Problem 2150 Fire Game Accept: 693 Submit: 2657 Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- Redis: Redis Desk Manager Setup
ylbtech-Redis: Redis Desk Manager Setup 1.返回顶部 1. redis-desktop-manager-0.8.1.3847 2. 2. 安装返回顶部 1. 2 ...
- Mysql操作符号
1.比较运算符: = 相等 <> 不等于 != 这个也可以 > 大于 < 小于 >= 大于等于 <= 小于等于 2.逻辑运算符: is null ...
- 关于CentOS 7安装jdk1.8
安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. ...