一、背景介绍

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

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

Windows下Net6开源akstream项目vs2022调试GB28181协议对接摄像头全流程的更多相关文章

  1. windows下使用vscode编写运行以及调试C/C++

    未经允许,禁止转载,唯一出处:tangming博客园 最后更新于2019年4月4日: 多次更新,内容较多,篇幅较大,但如果是喜欢visual stdio code这款编辑器的话建议仔细阅读,有疑问的地 ...

  2. Windows 下 pycharm 创建Django 项目【用虚拟环境的解释器】

    1.  背景 我在 Windows 下的 pycharm  直接创建 全新 Django  项目 会  pip 和其他报错 ,暂时解决不了,另外后续的多个项目只需要一套python 环境, 所以可以 ...

  3. 解决windows下eclipse中android项目关联android library project

    关于 在项目中导入 关联 library project 的问题,有时候会出现如下状况 在windows系统下,library project必须和project处于相同的盘符中 如果在不同盘符,pr ...

  4. Windows下快速建立cocos2d-x项目

    准备工作     1.根据当前系统版本,下载对应版本的Python         32位下载地址:http://www.python.org/ftp/python/2.7.5/python-2.7. ...

  5. windows下使用vscode编写运行以及调试Python

    更新于2018年10月: 首先去python官网下载python3  地址:https://www.python.org/downloads/windows/ 下载好后直接安装 记得勾选添加环境变量 ...

  6. 转:解决windows下eclipse中android项目关联android library project失败问题

    近日,在做一个人人的第三方小项目.打算直接使用renren 的sdk 进行开发.因为renren的sdk是以android library project 形式发布的(关于这种project的内容可以 ...

  7. windows下resin的配置部署与调试

    配置 从Resin官网(http://www.caucho.com)下载Resin解压后,启动Resin,运行resin根目录下的resin.exe文件,运行期间将出现下图所示的命令提示符窗口. 表示 ...

  8. windows下 maven+selenium+testng项目搭建(七)

    Selenium2.47.1 + Maven3.3.9 + TestNG6.8.8 windows准备好以下环境 1. Jdk,环境变量配置 2. maven环境3. eclipse 开发工具 ,ec ...

  9. 在打开Dreamweaver软件情况下,vs2010 asp项目无法调试

    会出现以下情况,只要关闭Dreamweaver就可以正常调试vs2010 asp项目.

  10. windows下为qt msvc版本配置调试器

    原文:https://blog.csdn.net/whatnamecaniuse/article/details/80716616 根据开发机的环境,下载 我的机器是win10,因此下载win 10 ...

随机推荐

  1. DataGear 制作自定义柱状图条目颜色的数据可视化看板

    DataGear 看板提供了dg-chart-options图表选项配置功能,可自定义样式.位置.显示内容等图表选项,其中的processUpdateOptions回调函数配置项,可以在图表更新数据前 ...

  2. 【Azure Redis 缓存】Redis性能指标之Server Load

    Server Load描述 在Redis的官方介绍中,Server Load指标是Redis 服务器忙于处理消息并且非空闲等待消息的周期百分比. 如果此计数器达到 100,则意味着 Redis 服务器 ...

  3. (转载)Transfer-Encoding:chunked详解

    原文链接:Transfer-Encoding:chunked详解_transfer-encoding: chunked_公众号:流花鬼的博客-CSDN博客 概念 分块传输编码(Chunked tran ...

  4. 酷呆桌面 CooDesker 桌面整理工具 - 软件推荐

    酷呆桌面 CooDesker 桌面整理工具 - 软件推荐 推荐理由 满足了我对桌面映射到某一目录的需求,这样桌面就真的干净了 免费且没有广告 可进入目录继续延展,双击空白地方返回上一层,非常方便 5M ...

  5. 创建 nest-websocket 服务 用于mock单点登录开发

    需求 有个单点登录的任务,但是都是现场的服务 api 和 websocket 都在现在 开发本机mock服务 本地搭建环境先模拟一下 资料 NestJS WebSocket 开始使用 https:// ...

  6. VS Code Snippet Generator 插件 生成 vscode代码片段

    VS Code Snippet Generator 插件 生成 vscode代码片段

  7. Istio中的核心资源及定义

    Istio 的核心资源主要包括以下几种: 1. Gateway 用于建模边缘网关,可以为进入或离开网格的流量提供专用的入口和出口点.Gateway 定义了在网格边缘运行的负载均衡器,用于接收传入或传出 ...

  8. Rabbit算法:轻量高效的加密利器

    Rabbit算法起源: Rabbit算法是由Martin Boesgaard和Mette Vesterager提出的一种流密码算法,其设计初衷是为了提供高性能和高度安全性的加密方案.Rabbit算法结 ...

  9. python使用replace将数组写入txt文本

    一 概念 1 Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次. 2 用法:str.replace ...

  10. leetcode数据库sql之Delete Duplicate Emails

    leetcode原文引用: Write a SQL query to delete all duplicate email entries in a table named Person, keepi ...