iOS端海康威视摄像头接入

作者: uproject | 来源:发表于2017-03-22 11:17 被阅读2776次

欢迎各位客官大老爷进QQ群交流: 257011323 (SDK都在群共享)

这几天公司要求在手机端需要看到海康威视的监控视频,网上找了半天也没有现成能用的demo。后来向海康威视的技术人员要了份demo,在这里总结一下。另外需要Demo的可以私信我。

1、导入如图所示的三个文件

01.png

其中

  • VideoPlaySDK 是用监控点的播放地址(多为rtsp url)通过流媒体或者MAG取流,实现播放、实时预览和远程回放功能。
  • VMSNetSDK 是获取平台资源的接口。如获取设备信息,获取区域信息等等。

2、添加所需库

  • 在使用VMSNetSDK中libVMSNetSDK.a的时候需要同时添加
    MobileCoreServices.framework
    SystemConfiguration.framework
    CFNetwork.framework
    CoreGraphics.framework
    libz.1.2.5.dylib
    libxml2.dylib
    libsql3.dylib
    libc++.dylib
    libstdc++.6.0.9.dylib
    以及VMSNetSDK中的所有静态库
注:如果编译出现’ libxml/tree.h’ file not found 请在Build Setting Header Search Paths 中设置:”/usr/include/libxml2/**”
  • 在使用VideoPlaySDK的时候,需要添加以下库
    AVFoundation.framework
    AudioToolbox.framework
    CoreGraphics.framework
    OpenAL.framework
    OpenGLES.framework
    QuartzCore.framework
    LibiconV2.4.0.dylib
    VideoToolbox.framework
    GLKit.framework
    CoreMedia.framework
    CoreGraphice.framework
    AudioToolbox.framework

3、项目中的使用

  • 1.在didFinishLaunchingWithOptions方法中调用
//初始化播放库 
InitLib();
VP_InitSDK();
  • 2.登录平台获取登录信息
  • 2.1 获取登录信息:
 [vmsNetSDK login:_serverAddressTextField.text
                        toUserName:平台账号
                        toPassword:平台密码
                          toLineID:可用线路
                     passwordLevel:3 //用户密码强度由开发者自行判断,强度由弱到强分别为0,1,2,3
                        toServInfo:mspInfo]; 

其中mspInfo就是所需的登录信息

  • 2.2 获取线路列表:
_lineList = [NSMutableArray array];
[vmsNetSDK getLineList:服务器地址 toLineInfoList:_lineList];

内网测试环境为http://10.33.27.240

  • 3.获取平台账号当前层级下的所有资源
   //获取当前层级的所有资源
  -(NSMutableArray *)_getAllResources {
    VMSNetSDK *vmsNetSDK = [VMSNetSDK shareInstance];
     _allResorceList = [NSMutableArray array];
     NSMutableArray *tempArray = [NSMutableArray array];    
   //判断当前对象应该获取控制中心还是区域下的资源
   if (nil == _regionInfo) {
       if (nil == _controlUnitInfo) {      
           //获取根控制中心
           [vmsNetSDK getControlUnitList:_serverAddress
                             toSessionID:_mspInfo.sessionID
                         toControlUnitID:0
                            toNumPerOnce:50
                               toCurPage:1
                       toControlUnitList:tempArray];
           [_allResorceList addObjectsFromArray:tempArray];
           [tempArray removeAllObjects];
           
       } else {
           
           //获取控制中心下的控制中心
           [vmsNetSDK getControlUnitList:_serverAddress
                             toSessionID:_mspInfo.sessionID
                         toControlUnitID:_controlUnitInfo.controlUnitID
                            toNumPerOnce:50
                               toCurPage:1
                       toControlUnitList:tempArray];
           [_allResorceList addObjectsFromArray:tempArray];
           [tempArray removeAllObjects];
           
           //获取控制中心下的区域
           [vmsNetSDK getRegionListFromCtrlUnit:_serverAddress
                                    toSessionID:_mspInfo.sessionID
                                toControlUnitID:_controlUnitInfo.controlUnitID
                                   toNumPerOnce:50
                                      toCurPage:1
                                   toRegionList:tempArray];
           [_allResorceList addObjectsFromArray:tempArray];
           [tempArray removeAllObjects];
           
           //获取控制中心下的设备
           [vmsNetSDK getCameraListFromCtrlUnit:_serverAddress
                                    toSessionID:_mspInfo.sessionID
                                toControlUnitID:_controlUnitInfo.controlUnitID
                                   toNumPerOnce:50
                                      toCurPage:1
                                   toCameraList:tempArray];
           [_allResorceList addObjectsFromArray:tempArray];
           [tempArray removeAllObjects];
           
       }
     } else {      
       //获取区域下的区域
       [vmsNetSDK getRegionListFromRegion:_serverAddress
                              toSessionID:_mspInfo.sessionID
                               toRegionID:_regionInfo.regionID
                             toNumPerOnce:50
                                toCurPage:1
                             toRegionList:tempArray];
       [_allResorceList addObjectsFromArray:tempArray];
       [tempArray removeAllObjects];
       //获取区域下的设备
       [vmsNetSDK getCameraListFromRegion:_serverAddress
                              toSessionID:_mspInfo.sessionID
                               toRegionID:_regionInfo.regionID
                             toNumPerOnce:50
                                toCurPage:1
                             toCameraList:tempArray];
       [_allResorceList addObjectsFromArray:tempArray];
       [tempArray removeAllObjects];
     }
     return _allResorceList;
     }

如果进行递归遍历,可以获取到所有设备以及播放通道。
获取到的资源数组中如果是属于CCameraInfo 类或其子类的,就是可以用于播放的设备,将所需的参数传递过去即可
服务器地址、登录信息MspInfo以及监控点信息cameraInfo

  • 4.准备播放
    • 获取播放地址

_realPlayURL = [[CRealPlayURL alloc] init];
BOOL result = [vmsNetSDK getRealPlayURL:服务器地址
toSessionID:_mspInfo.sessionID
toCameraID:_cameraInfo.cameraID
toRealPlayURL:_realPlayURL
toStreamType:STREAM_SUB]; //StreamType=0时,返回主码流和MAG地址,其=1时返回子码流和MAG地址


  - 获取设备信息

CDeviceInfo *deviceInfo = [[CDeviceInfo alloc] init];
result = [vmsNetSDK getDeviceInfo:_serverAddress
toSessionID:_mspInfo.sessionID
toDeviceID:_cameraInfo.deviceID
toDeviceInfo:deviceInfo];

 - 填充监控点信息

//填充vidioInfo
VideoPlayInfo *videoInfo = [[VideoPlayInfo alloc] init];
//监控点ID
videoInfo.strID = _cameraInfo.cameraID;
//取流协议类型 UDP或TCP
videoInfo.protocalType = PROTOCAL_UDP;
//播放模式,实时预览或者远程回放
videoInfo.playType = REAL_PLAY;
//取流方式,目前只支持从流媒体
videoInfo.streamMethod = STREAM_METHOD_VTDU;
//主子码流
VP_STREAM_TYPE streamType = STREAM_SUB;
videoInfo.streamType = streamType;
//播放的控件 UIView即可
videoInfo.pPlayHandle = (id)self.playView;
//是否要开启转封装
videoInfo.bSystransform = NO;
//播放地址
videoInfo.strPlayUrl = _realPlayURL.url1;

- 5.开始播放

// 获取VideoPlaySDK 播放句柄
if (_vpHandle == NULL)
{
_vpHandle = VP_Login(videoInfo);
}

// 设置状态回调
if (_vpHandle != NULL)
{
    VP_SetStatusCallBack(_vpHandle, StatusCallBack, (__bridge void *)self);
}

// 开始实时预览
if (_vpHandle != NULL)
{
    if (!VP_RealPlay(_vpHandle))
    {
        NSLog(@"start VP_RealPlay failed");
    }
}

###4、总结
- 虽然_mspInfo.sessionID和 _cameraInfo.cameraID是动态的,但是在播放的时候并不需要获取到,在自己项目集成的时候,只需要获取到rtsp流播放的地址,这个地址也是写死的,初始化一个VideoplayInfo,监控点ID可以不填,把其他的参数填好,然后开始播放就可以了
- 播放的卡顿跟网络很有关系,车载摄像头最好使用网线上传流媒体,使用3/4g卡上传的话延迟会比较严重。

- 关于优化的方面
VideoPlaySDK是封装好的播放控件,如果需要播放流畅度优化的话应该需要自己写一个播放器来播放了。

欢迎各位客官大老爷进QQ群交流: 257011323

相关文章

  • 海康威视 - iOS SDK接入

    萤石官网萤石开放平台 iOS SDK接口使用说明 iOS端海康威视摄像头接入 文件介绍 导入库文件 修改配置文件 ...

  • iOS端海康威视摄像头接入

    欢迎各位客官大老爷进QQ群交流: 257011323 (SDK都在群共享) 这几天公司要求在手机端需要看到海康威视...

  • 百度地图marker上添加文字的一种实现方案

    年前在做项目时,客户提了一个需求,在手机客户端中需要集成海康威视摄像头的视频监控功能,并在需要在地图中加载摄像头的...

  • 海康威视的财务解读

    用所学到的财报知识浅浅的分析一下海康威视的财务状况。 一、是不是赚钱的行业? 海康威视是从事安防摄像头的龙头企业,...

  • 海康威视摄像头

    设置 关掉红外补光 自动白平衡 日夜转换为“白天” 网线水晶头接法 网线有两种做法,一种是交叉线,一种是平行(直通...

  • 摄像头品牌及rtsp格式整理

    摄像头品牌及rtsp格式整理 目前平台先兼容以下三种主流摄像头品牌。 1.品牌名称:海康威视 rtsp://[us...

  • 视频监控方案

    互联网络摄像头自带热点摄像头本地网络摄像头产品小方智能摄像机海康威视 自带热点明创达 网络工业相机使用1. 摄像头...

  • 使用rtsp协议访问海康IP摄像头

    问题背景 前段时间做3S比赛的时候涉及到在安卓端调用实验室海康威视摄像头进行实时的视频监控,苦于海康官网没有提供安...

  • 各摄像头厂家协议流格式

    目前主要工业级摄像头厂家访问协议 一、海康威视 : 预览取流 老版本: URL规定:rtsp://username...

  • 我对监控的认识

    监控主要由摄像头和录像机组成,家用还有一种摄像头有自带的存储卡。 现在一般都使用海康威视的监控设备,摄像头通过供电...

网友评论

  • 7726870901be:求demo,18637333901@163.com,谢楼主
  • smile丶淡然:楼主你好,可以发我一份海康Demo嘛,谢谢 1721787140@qq.com
  • c064eb840803:求demo,13271926548@163.com,谢楼主
  • 知更_b048:楼主 求海康Demo 718451036@qq.com 多谢楼主
  • 205b5fc7253a:求demo,385395559@qq.com,谢谢楼主
  • 堃_316c:求demo,254137679@qq.com,谢谢楼主
  • 641aa5c3f202:求demo,1044543532 @qq.com,谢谢楼主
  • 小小小鸟小小小:求demo,zd_2010@163.com ,谢楼主
  • 7anOS:fanmaoyu0871@163.com,谢谢楼主
  • reyzhang:大神求一份demo,27196849@qq.com 谢谢啦
  • 2cc9e5bee4b5:大神求一份demo,1029866584@qq.com
  • 4305824b6977:我要到的是c++接口SDK,和你截图里的不一样,我发现还有oc的SDK,HIKVersion4500.framework
  • l漂泊l:大神 可以给我发一份demo吗 1240758925@qq.com very thanks!
  • 左岸留恋:求一份demo duoluock@foxmail.com
  • 不辣先生:解码的时候,卡顿,花屏,高cpu这些,怎么处理的大神,你的播放器用的哪个啊?
  • 4cee4b4f0365:大神 求demo 424128933@qq.com
  • 土匪大当家:楼主你好,也可以发我一份海康Demo嘛,谢谢 834669908@qq.com
  • a6e7c662506f:大神,我也需要demo,854937886@qq.com,谢谢 :)
  • MasonCoder:麻烦发份demo 466317974@qq.com
    非常感谢
  • cocoaZ:求demo 1498161293@qq.com 谢谢!
  • 汤姆猫_6074:麻烦发到757566833@qq.com
    非常感谢
  • WinD是狮子座:大神,求发一份ios端的demo,万分感谢~邮箱地址:ils1314@vip.qq.com
  • 这个熊孩子不太冷:楼主求一份demo,songjichao225@163.com谢谢
  • dda5a2cf4502:644025323@qq.com 好人一生平安!
    uproject:@勒是雾都啊 加群嘛,群里有撒
  • C_灵朔:这几天也在搞这个 求一份海康的demo 谢谢 1608538691@qq.com
  • 一个记事本:运行海康demo,进入相应的控头后ios端没有画面,点击预览报"获取实时预览URL地址失败"。而pc端是有的监控画面的。请教一下。:pray:
    一个记事本:@uproject 谢谢,已加群,原来是监控设置没配mag服务。
    uproject:@一个记事本 你加群问问吧,群里人多
  • 一个记事本:可以发给我一份demo吗,非常感谢,380943617@qq.com
  • crow226119:大神,demo可以发一份吗?demo有没有适配iOS11的呢?邮箱2212807463QQ.com
  • Swift研习室:麻烦楼主给一份那个 Demo。非常感谢
  • 225fe594ecfe:1028770462@qq.com 求 海康威视的 Demo
  • 老坛风:请问有集成支付宝sdk吗?我这边集成了支付宝sdk后,就卡在NET_DVR_Login_V30注册设备代码上?有遇到的吗?
    老坛风:@uproject 对呀,删掉支付宝sdk就好了
    uproject:你是说支付宝Sdk跟这个有冲突吗?
  • 5c16631b5dbf:求源码Demo,mgv5@qq.com,谢谢了.
  • 白云游子:跪求Demo,297482125@qq.com
  • 46e58750a57e:求源码QQ:1067887599。谢谢了。
  • Lucas853:你好,可以给我发一份海康iOSSDK的DEMO,谢谢!
    Lucas853:QQ:982305722
  • 吃鲸鱼的喵:求 海康威视的 Demo, QQ联系 923138040@qq.com, 谢谢 楼主
  • 530dc6867031:大佬 还能求demo吗:confounded: 939221196@qq.com
  • 喜欢吃生蚝:demo 监控点 预览 报错
    rtsp start stream failed. error code is 18
    start VP_RealPlay failed
    知道什么原因吗 老哥
    uproject:@喜欢吃生蚝 那就不是sdk 的问题,你官方的先预览可以了再试sdk
    喜欢吃生蚝:@uproject 官方的也预览失败 什么检查通讯线路,或网络情况
    uproject:你下个官方的app ,叫ivms5060先看看能不能播放。
  • a2f037f7bfbb:求海康的Demo, QQ联系 396385648@qq.com, 非常感谢,另外请问有大华的demo吗?
    uproject:@itsLUO 群里有你加群吧
  • 不是长颈鹿:老司机带带我
  • 84d882ef5267:博主大大,群里共享的 和你这里写的不是一个sdk呀。。群里共享的。。。根本没有VideoPlaySDK之类的呀。。。这个是你封装的还是?
    uproject:@恩底弥翁之鹰 有的吧,是封装好的
  • Bemagine:大神,求 海康威视的 Demo, QQ联系 408601811@qq.com, 谢谢 楼主
    uproject:@Bemagine 你加一下群吧,里面有
  • Jeff_bian:来一发demo谢谢,老铁,302504531@qq.com
  • 夢若繁星:673646979@qq.com 求一份演示视频 谢谢
  • 今天_现在:求海康威视demo,非常急,邮箱:missshiwen_zhou@163.com
  • 忘山老人:感谢楼主大大江湖救急,楼主大大能发我一份 demo 么?814637488@qq.com
  • a396ddf1712f:求发我一份demo 1115804131@qq.com 谢谢楼主
    uproject:@a396ddf1712f 群里面有,你加一下吧
  • Lorne_coder:求一份demo 627841904@qq.com 已加群 等待验证
  • 63f2dd559f52:楼主给我也 发一份儿呗,谢谢844391981@qq.com
    uproject:@尼玛蛋用啥昵称都被占用 你加一下群下载吧,在群共享
  • LoveEachDay:这个很厉害
  • b1b5c41a91a3:楼主可以也给我发一份demo么?我邮箱:570515965@qq.com
    a814ec254192:楼主可以也给我发一份demo么?我邮箱:413739302@qq.com
    uproject:@Symphony_7dfa 群共享里有,你进群下载吧
  • 漫雪思舟:求demo QQ:77487814 ,谢谢大神
  • 63243b524473:大神发个包给我 1006969873@qq.com



  • GeekPwn_S:可以发我一份demo吗 1073212671@qq.com 谢谢:blush:
  • 老熊猫:请问下能多通道同时播放吗?
    记忆留夏:请问一下,我在播放的时候会导致界面卡2到3秒,这个要怎么解决?求demo 一份,邮箱1525328738@qq.com
    uproject:@老熊猫 肯定可以啊,Demo不就可以吗
  • qbxsdhl:大神,求发一份ios端的demo,万分感谢~邮箱地址:51779094@qq.com
  • 我是要成为大神的男人:大神,我也需要demo,601447049@qq.com
    我是要成为大神的男人:@uproject不对吧,确定是iOS sdk demo么。
    uproject:@我是要成为大神的男人 已发
  • 9e4428de5cb5:可以发给我一份demo吗,非常感谢,1360677450@qq.com
    uproject:@zh命运在我手中 已发
  • 卟师:可以发我一份demo麽 812920365@qq.com 谢谢啊
  • 7297c671c2b4:可以给我发一份demo吗 790175706@qq.com thanks
    7297c671c2b4:@uproject 3Q
    uproject:@萝卜都不给我 已发
  • 7297c671c2b4:可以发我一份demo麽 790175706@qq.com thanks
  • Sunror:我卡在抓图的环节,求支援,已加群,等验证
  • Rickie_Lambert:关于海康威视里的截图 功能, 你知道它怎么做的吗? 提示是 保存成功了, 但是本地相册中找不到

    #pragma mark 截图
    - (void)capture
    {
    NSLog(@"截图........");
    VPCaptureInfo *captureInfo = [[VPCaptureInfo alloc] init];
    if (![VideoPlayUtility getCaptureInfo:@"camera01" toCaptureInfo:captureInfo]) {
    NSLog(@"getCaptureInfo failed");
    return;
    }
    // 设置抓图质量 1-100 越高质量越高
    captureInfo.nPicQuality = 80;
    BOOL result = [g_playMamager capture:captureInfo];
    if (result) {
    NSLog(@"截图成功,图片路径:%@",captureInfo.strCapturePath);
    } else {
    NSLog(@"截图失败");
    }
    }
    Rickie_Lambert:@Sunror 截图截到了, 根绝它提示的路径去找, 你需要访问一下手机里Demo的沙盒,找到这个路径下的图片文件, 然后保存到相册里. 百度一下就有解决方法了.
    Sunror:@uproject 貌似,SDK的播放器盖在我们写的view上面,截取view的图片,怎么个策略,真的截取到并且没有问题吗
    uproject:@Mr_Rain 你可以直接截取view的图片就好了吧,我没用这里的截图功能
  • Link913:传输都封装了吗??
  • 小冰山口:大神可不可以带一下我
    小冰山口:@lawrenceWeiii 江湖从此无方神

本文标题:iOS端海康威视摄像头接入

本文链接:https://www.haomeiwen.com/subject/zgznnttx.html