Windows下Net6开源akstream项目vs2022调试GB28181协议对接摄像头全流程

发布时间 2023-11-02 09:43:12作者: 郑州-在路上

一、背景介绍

笔者经历多个项目对接摄像头需求,不同项目具体要求又有所不同,碰到的摄像头对接开发问题,整理记录。此篇主要用于记录备用及给有缘人提供解决思路等。

1.   同一局域网对接(海康摄像头),如果有专线这种方式对接也是最简单的。

2.   互联网基于萤石云协议对接(支持萤石协议的),免费的有并发3个限制。

3.   互联网基于国标协议,解决内网传统问题。有技术难度,技术栈涉及较多。

主要介绍第三种情况GB28181协议对接开发,前面两种简单带过。海康、大华、宇视等主流摄像头都支持此协议,所以开发对接后市面上大部分摄像头都可以接入。

二、同网段或萤石协议对接

有互联网固定ip的参考同网段开发解决方案。

1.以海康为例局域网内可以通过对接摄像头sdk,根据摄像头对应web版sdk直接对接rtmp播放。Sdk有对应demo,输入摄像头ip,端口,用户名,密码登录可以测试。此方式有并发限制,这边测试的大概是10个,主要还要看关闭页面后是否能够及时回收占用资源。页面频繁调用同一摄像头会造成连不上摄像头,暂时没找到好的解决方案,有时候还需要重启一下摄像头才能访问。

 

这种模式基于互联网网络访问时就很难访问到了,如果项目摄像头与应用同在一个局域网内可以考虑使用最新的无插件sdk,“WEB无插件开发包 V3.2” 地址https://open.hikvision.com/fileserver/resourcedocsonline/Web3.2_控件开发包编程指南_20201102163345.pdf。摄像头与应用服务器不在同一ip段时要注意是否可以互相访问,建议用交换机。大华、宇视等自行查找官网解决方案。

2.萤石协议对接,根据appKey和secret获取accessToken接口,通过设备序列号、通道号获取单台设备的播放地址信息,无法获取永久有效期播放地址。官方对接文档:

https://open.ys7.com/doc/zh/book/index/user.html

萤石协议对接时注意多看官方文档。

优势:基于萤石可以快速开发对接,也能兼容到大部分摄像头,最优的还是海康的设备。

劣势:并发限制;一个开发号最多同时3个并发,如3个人访问同一画面,或一个人最多访问3个画面。个人版:设备接入能力: 10台;接口每日调用上限: 3并发/应用。不差钱的企业可以选择月套餐。

 

 

 

三、GB28181协议简单介绍

GB28181协议指的是国家标准GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。

GB28181协议会话通道实际上使用的是SIP协议,并且在SIP协议的基础之上做了些私有化处理。SIP是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。

SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。

SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。

SIP协议会与许多其它的协议协同工作,如SIP报文内容发送会话描述协议(Session Description Protocol,SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。

SIP的一个典型用途是:SIP会话传输一些简单的经过报文的实时传输协议流,RTP本身才是语音或视频的载体。在GB28181协议中,联网系统在进行视音频传输及控制时应建立两个传输通道: 会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令; 媒体流通道用于传输视音频数据, 经过压缩编码的视音频流采用流媒体协议RTP/RTCP传输。会话通道中,注册、实时视音频点播、历史视音频的回放等应用的会话控制采用SIP协议IETF RFC3261中规定的REGISTER、INVITE等请求和响应方法实现, 历史视音频回放控制采用SIP扩展协议IETF RFC29765规定的INFO方法实现,前端设备控制、信息查询、报警事件通知和分发等应用的会话控制采用SIP扩展协议IETF RFC34287规定的MESSAGE方法实现。

 

1.该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。GB28181协议信令层面使用的是SIP(Session Initiation Protocol)协议。

2.流媒体传输层面使用的是实时传输协议(Real-time Transport Protocol,RTP)协议。

3.因此可以理解为GB28181是在国际通用标准的基础之上进行了私有化定制以满足视频监控联网系统互联传输的标准化需求。

4.由于本次主要是要介绍开源项目akstream,相关协议底层对接这里不再做过多讲述,感兴趣的可以看开源项目底层处理代码;更多GB28181协议知识请自行学习,注册、保活等,学习参考:https://zhuanlan.zhihu.com/p/545703291

注意:GB28181要求传输的视频流格式为PS流,或者H264流,或者MP4格式。不同的模式视频直播延时时间不同,rtsp、rtmp、hls等延迟大部分为10秒左右,flv、mp4播放在3秒左右,可能与播放器或者其它配置有关系,暂未找到合适方案。

国标流媒体服务器其实就是负责将GB28181设备或者平台推送的PS流转成ES流,然后提供RTSP、RTMP、FLV、HLS等格式进⾏分发。也就是此篇文章的主线,基于akstream搭建国标流媒体服务。

篇幅原因更多内容可以参考https://mp.weixin.qq.com/s/gYS4W8HBsPYw2lQfEs7Y7Q