一、背景介绍

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

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. 矩池云产品最新动态 All in One

    AI/ML 的不断革新,让我们看到了更多激动人心的应用方向,也迸发了更多的训练&应用场景. 在用户的反馈和建议下,矩池云持续丰富和优化在 AI+Science 链路上的相关产品,为了帮助研究人 ...

  2. CXP2.0的相机是否可以使用CXP1.1的Grabber

    可以 答案是肯定的. 目前CXP共有2个发布版本: 2011年发布CXP1.1 2021年发布CXP2.1,向后兼容,新标准增加了同步功能.数据率放大了一倍. 只要是符合CXP标准.接插件匹配,那么C ...

  3. iOS APP包瘦身,你在工作中真的会关注吗?

    安装包组成 谈到 App 瘦身,最直接的想法莫过于分析一个安装包内部结构,了解其每一部分的来源.解压一个 ipa 包,拿到其 payload 中 app 文件的数据,整理归类后其大致如下: Exect ...

  4. 【Azure Redis】Redis导入备份文件(RDB)失败的原因

    问题描述 在测试Azure Redis的导入/导出备份文件的功能中,突然发现在Redis 4.0上导入的时候,一直报错. 问题解答 因为门户上只是显示导入失败,没有任何错误消息说明.根据常理推断,Re ...

  5. 【Azure事件中心】使用Python SDK(Confluent)相关方法获取offset或lag时提示SSL相关错误

    问题描述 使用Python SDK(Confluent)相关方法获取offset或lag时, 提示SSL相关错误, 是否有更清晰的实例以便参考呢? 问题解决 执行代码,因为一直连接不成功,所以检查 c ...

  6. 【Azure Redis 缓存】VM 里的 Redis 能直接迁移到 Azure Cache for Redis ? 需要改动代码吗?

    问题描述 原来部署在VM 里的 Redis 能直接迁移到 Azure Cache for Redis? 需要改动代码吗? 问题解答 以上问题需要从两个方面来解答. 第一:VM中Redis的数据转移到 ...

  7. 一文了解 Nebula Graph DBaaS 服务——Nebula Graph Cloud Service

    Nebula Graph DBaaS 作为一款 DBaaS(DataBase as s Service)的产品,Nebula Graph Cloud Service 极大地降低了研发人员使用 Nebu ...

  8. ubuntu版本为16.04,英文改成中文解决方法和解决中文输入法无效的问题,关于无法打开锁文件的解决方法

    https://jingyan.baidu.com/article/4853e1e565e1781908f7266c.html,根据这篇文章操作完成后重启ubuntu之后ubuntu就会变成中文,重启 ...

  9. k8s部署nacos集群

    首先创建数据库 nacos 执行以下语句 CREATE TABLE `config_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'i ...

  10. kafka 工作流程及文件存储机制

    1.kafka的数据存储      文件存储格式: .log 和 .index Kafka 中消息是以 topic 进行分类的, 生产者生产消息,消费者消费消息,都是面向 topic的. topic ...