一、背景介绍

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

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. jstack查看JVM堆栈信息

    目录 介绍 线程状态 Monitor 调用修饰 线程动作 命令格式 常用参数说明 使用实例 jstack pid jstack 查看线程具体在做什么,可看出哪些线程在长时间占用CPU,尽快定位问题和解 ...

  2. jvm调优监控工具jps、jstack、jmap、jhat、jstat使用详解

    目录 前言 jps(Java Virtual Machine Process Status Tool) jstack jmap(Memory Map)和jhat(Java Heap Analysis ...

  3. VC-MFC(1) 随笔笔记+连接数据库

    1 数据库语句: 2 CREATE DATABASE---创建新数据库 3 ALTER DATABASE-----修改数据库 4 CREATE TABLE ---- -创建新表 5 ALTER TAB ...

  4. nginx rewrite 语法

    nginx rewrite 语法 一 定义 Rewrite主要实现url地址重写, 以及地址重定向,就是将用户请求web服 务器的地址重新定向到其他URL的过程. 二 语法格式 reweite fia ...

  5. typora 目录内添加右键

    Typora.reg 这里路径改成自己的 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\sh ...

  6. gap 单词学习 对标 open

    为什么gap 和 open 联系记忆呢? gap是从行为动作中来 open 中 op 就是 up,是从 单词字母的角度来 但是 本意 这两个单词都差不多 gap gap : 来自PIE*ghai,打呵 ...

  7. Win10使用Dism++离线安装.Net3.5

    .Net3.5的安装包在Win10已经不能使用了,在线安装.Net3.5会很卡(跟网络无关),最好是使用Dism++提取Win10系统镜像文件离线安装. 打开Dism++软件,按照如下步骤操作: 选择 ...

  8. linux环境下基于python的OpenCV 保存视频

    一 概念 在OpenCV中保存视频使用的是VedioWriter对象,在其中指定输出文件的名称, A 创建视频写入的对象 out = cv2.VideoWriter(filename,fourcc, ...

  9. Windows 2012 R2 修复CredSSP 远程执行代码漏洞 CVE-2018-0886

    本文基于window 2012 R2版本,各位参考下载自己版本对应的补丁包即可 说明 公司的安全性检查,需要修复服务器上的漏洞,其中有个漏洞是CVE-2018-0886,结果网上的资料和一番折腾,终于 ...

  10. 前后端分离Ajax入门

    前后端分离之Ajax入门 一.概念 Ajax(Asynchronous Javascript And XML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信 ...