GB/T28181

国标GB/T28181协议全称《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是一个定义视频联网传输和设备控制标准的白皮书,由公安部科技信息化局提出,该标准规定了城市监控报警联网系统中信息传输、交换、控制的互联结构、通信协议结构,传输、交换、控制的基本要求和安全性要求,以及控制、传输流程和协议接口等技术要求。解决了视频间互联互通,数据共享,以及设备控制的问题,这个问题从顶层解决了视频信息各自为战的问题,打通了视频联网的信息孤岛。

优势:GB28181相对RTMP,支持TCP和UDP模式,信令流负责session交互,数据流负责数据传输,适合标准协议规范的平台级产品对接。

除了支持常规的数据接入外,还支持针对摄像机的PTZ控制,支持标准28181服务对接。

劣势:外部支持GB28181的服务器不多,开源如SRS服务器针对GB28181的支持暂不够商用级,期待后续版本升级支持更好。

以海康摄像头对接28281平台为例,具体交互流程如下:

REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK1624213340
From: <sip:34020000001110000044@3402000000>;tag=2045629479
To: <sip:34020000001110000044@3402000000>
Call-ID: 1367363228
CSeq: 1 REGISTER
Contact: <sip:34020000001110000044@192.168.0.120:15068>
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK1624213340
From: <sip:34020000001110000044@3402000000>;tag=2045629479
To: <sip:34020000001110000044@3402000000>;tag=993246605
CSeq: 1 REGISTER
Call-ID: 1367363228
User-Agent: LiveGBS v210723
Contact: <sip:34020000001110000044@192.168.0.120:15068>
Content-Length: 0
Date: 2021-08-13T10:14:11.789
Expires: 3600MESSAGE sip:34020000001110000044@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.199:15060;rport;branch=z9hG4bK796247609
From: <sip:34020000002000000001@3402000000>;tag=180247609
To: <sip:34020000001110000044@3402000000>
Call-ID: 807247609
CSeq: 2 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: LiveGBS v210723
Content-Length: 157<?xml version="1.0" encoding="GB2312"?>
<Query><CmdType>Catalog</CmdType><SN>552247609</SN><DeviceID>34020000001110000044</DeviceID>
</Query>
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.199:15060;rport=15060;branch=z9hG4bK796247609
From: <sip:34020000002000000001@3402000000>;tag=180247609
To: <sip:34020000001110000044@3402000000>;tag=1518451596
Call-ID: 807247609
CSeq: 2 MESSAGE
User-Agent: IP Camera
Content-Length: 0MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK138770826
From: <sip:34020000001110000044@3402000000>;tag=2116434170
To: <sip:34020000002000000001@3402000000>
Call-ID: 111408894
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length:   590<?xml version="1.0" encoding="GB2312"?>
<Response>
<CmdType>Catalog</CmdType>
<SN>552247609</SN>
<DeviceID>34020000001110000044</DeviceID>
<SumNum>1</SumNum>
<DeviceList Num="1">
<Item>
<DeviceID>34020000001320000001</DeviceID>
<Name>Camera 01</Name>
<Manufacturer>Hikvision</Manufacturer>
<Model>IP Camera</Model>
<Owner>Owner</Owner>
<CivilCode>CivilCode</CivilCode>
<Address>Address</Address>
<Parental>0</Parental>
<ParentID>34020000001110000044</ParentID>
<SafetyWay>0</SafetyWay>
<RegisterWay>1</RegisterWay>
<Secrecy>0</Secrecy>
<Status>ON</Status>
</Item>
</DeviceList>
</Response>
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK138770826
From: <sip:34020000001110000044@3402000000>;tag=2116434170
To: <sip:34020000002000000001@3402000000>;tag=514247616
CSeq: 20 MESSAGE
Call-ID: 111408894
User-Agent: LiveGBS v210723
Content-Length: 0MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK1946244729
From: <sip:34020000001110000044@3402000000>;tag=1705757152
To: <sip:34020000002000000001@3402000000>
Call-ID: 1030239866
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length:   177<?xml version="1.0" encoding="GB2312"?>
<Notify>
<CmdType>Keepalive</CmdType>
<SN>11</SN>
<DeviceID>34020000001110000044</DeviceID>
<Status>OK</Status>
<Info>
</Info>
</Notify>
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK1946244729
From: <sip:34020000001110000044@3402000000>;tag=1705757152
To: <sip:34020000002000000001@3402000000>;tag=334251619
CSeq: 20 MESSAGE
Call-ID: 1030239866
User-Agent: LiveGBS v210723
Content-Length: 0MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK1402863583
From: <sip:34020000001110000044@3402000000>;tag=754663007
To: <sip:34020000002000000001@3402000000>
Call-ID: 187348500
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length:   177<?xml version="1.0" encoding="GB2312"?>
<Notify>
<CmdType>Keepalive</CmdType>
<SN>12</SN>
<DeviceID>34020000001110000044</DeviceID>
<Status>OK</Status>
<Info>
</Info>
</Notify>
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK1402863583
From: <sip:34020000001110000044@3402000000>;tag=754663007
To: <sip:34020000002000000001@3402000000>;tag=959261639
CSeq: 20 MESSAGE
Call-ID: 187348500
User-Agent: LiveGBS v210723
Content-Length: 0

RTSP推送

rtsp推送相关的资料和测试软件比较少,支持RTSP TCP模式和UDP模式,除非对接第三方平台,不建议使用RTSP推送。

具体流程如下:

1. rtsp推送流程.

主要分两部分:第一部分先发送信令;第二部分发送rtp包。

 信令流程:

1.1 先发送OPTIONS, OPTIONS比较常用,就不做详细说明了。

1.2 发送ANNOUNCE, 发送ANNOUNCE主要是把要推送的音视频信息通过sdp格式传给服务器。关于sdp信息如何构造,对于h264请参考rfc6184. h265请参考rfc7798. 下面举两个例子.

h264+aac ANNOUNCE:

ANNOUNCE rtsp://192.168.0.188:554/livexxxx.sdp RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: xxxyyy
Content-Length: 489

v=0
o=- 0 0 IN IP4 127.0.0.1
s=dddookkk
c=IN IP4 192.168.0.188
t=0 0
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z00AKp2oHgCJ+WbgICAoAAADAAgAAAMBlCA=,aO48gA==; profile-level-id=4D002A
a=control:streamid=0
m=audio 0 RTP/AVP 97
a=rtpmap:97 MPEG4-GENERIC/44100/1
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1208
a=control:streamid=1

h265(hevc) + aac ANNOUNCE:

ANNOUNCE rtsp://192.168.0.174:554/live3.sdp RTSP/1.0
Content-Type: application/sdp
CSeq: 2
User-Agent: mmmmd
Content-Length: 364

v=0
o=- 0 0 IN IP4 127.0.0.1
s=uvsdewewe
c=IN IP4 192.168.0.174
t=0 0
m=video 0 RTP/AVP 96
a=rtpmap:96 H265/90000
a=control:streamid=0
m=audio 0 RTP/AVP 97
a=rtpmap:97 MPEG4-GENERIC/44100/1
a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1208
a=control:streamid=1

1.3 发送 SETUP,这个和播放基本一样,请参考播放流程.

1.4 发送 RECORD,record之后,信令流程完成, 接下来发送rtp包即可。

关于rtp包的构造,h264 参考rfc6184。 h265参考 rfc7798。

以Android平台为例,相关接口设计如下:

    /*+++++++++++++++推送rtsp相关接口+++++++++++++++*//** 设置推送rtsp传输方式** @param transport_protocol: 1表示UDP传输rtp包; 2表示TCP传输rtp包. 默认是1, UDP传输. 传其他值SDK报错。** @return {0} if successful*/public native int SetPushRtspTransportProtocol(long handle, int transport_protocol);/** 设置推送RTSP的URL** @param url: 推送的RTSP url** @return {0} if successful*/public native int SetPushRtspURL(long handle, String url);/** 启动推送RTSP流** @param reserve: 保留参数,传0** @return {0} if successful*/public native int StartPushRtsp(long handle, int reserve);/** 停止推送RTSP流** @return {0} if successful*/public native int StopPushRtsp(long handle);/*---------------推送rtsp相关接口---------------*/

RTMP推送

RTMP采用的是TCP传输,采用全自研框架,易于扩展,自适应算法让延迟更低、采集编码传输效率更高。延迟配合大牛直播SDK(官方)的播放器,依然可以实现毫秒级。

跨平台设计如下:

  • [本地预览]Windows平台支持摄像头/屏幕/合成数据实时预览功能,Android/iOS平台支持本地前后置摄像头预览;
  • [摄像头反转/旋转]Windows平台支持摄像头水平反转、垂直反转、0°/90°/180°/270°旋转;
  • [摄像头采集]除常规YUV格式外,Windows平台还支持MJPEG格式的摄像头采集;
  • [麦克风/扬声器采集]Windows平台音频输入端支持麦克风、扬声器,或麦克风和扬声器混音输入;
  • [RTMP推流]超低延时的RTMP协议直播推流SDK(Windows/Android/iOS支持RTMP扩展H.265推送);
  • [视频格式]Windows/Android平台支持H.264/H.265编码(Android H.265硬编码),iOS平台支持H.264编码;
  • [音频格式]Windows/Android/iOS平台支持AAC编码,Windows/Android平台支持Speex编码;
  • [音频编码]Windows/Android平台支持Speex推送、Speex编码质量设置;
  • [音量调节]Windows/Android平台采集端支持实时音量调节(其中,Windows平台混音模式下支持单独控制麦克风、扬声器音量);
  • [H.264硬编码]Windows/Android/iOS平台支持H.264特定机型硬编码;
  • [H.265硬编码]Android/iOS平台支持H.265特定机型硬编码;
  • [硬编码自适应]Android/iOS平台支持硬编码自适应,如检测到硬编码不支持,自动切换到软编(iOS如H.265硬编,先切换到H.264硬编码,如不支持再尝试H.264软编);
  • [软硬编码参数配置]支持gop间隔、帧率、bit-rate设置;
  • [软编码参数配置]支持软编码profile、软编码速度、可变码率设置;
  • [多实例推送]支持多实例推送(如同时推送屏幕/摄像头和外部数据);
  • [RTMP扩展H.265]Windows/Android/iOS推送SDK支持RTMP扩展H.265推送,Windows针对摄像头采集软编码,使用H.265可变码率,带宽大幅节省,效果直逼传统H.265编码摄像头,Android/iOS平台支持H.265硬编码;
  • [横竖屏推流]Android/iOS平台支持支持横屏、竖屏推流;
  • [多分辨率支持]支持摄像头或屏幕多种分辨率设置;
  • [Windows推屏]Windows平台支持屏幕裁剪、窗口采集、屏幕/摄像头数据合成等多种模式推送;
  • [移动端推屏]Android平台支持后台service推送屏幕(推送屏幕需要5.0+版本);
  • [移动端推屏]iOS平台支持后台推送屏幕(基于ReplayKit,需要iOS 10.0+版本);
  • [事件回调]支持各种状态实时回调;
  • [水印]Windows平台支持文字水印、png水印、实时遮挡,Android平台支持文字水印、png水印;
  • [RTMP推送模式]支持RTMP推送 live|record模式设置(需服务器支持);
  • [镜像]Android/iOS平台支持前置摄像头实时镜像功能;
  • [前后摄像头实时切换]Android/iOS平台支持采集过程中,前后摄像头切换;
  • [复杂网络处理]支持断网重连等各种网络环境自动适配;
  • [动态码率]支持根据网络情况自动调整推流码率;
  • [实时静音]支持推送过程中,实时静音/取消静音;
  • [实时快照]支持推流过程中,实时快照;
  • [纯音频推流]支持仅采集音频流并发起推流功能;
  • [纯视频推流]支持特殊场景下的纯视频推流功能;
  • [降噪]Windows/Android平台支持环境音、手机干扰等引起的噪音降噪处理、自动增益、VAD检测;
  • [回音消除]Android平台支持实时传递远端PCM数据,方便回音消除处理;
  • [外部编码前视频数据对接]支持YUV数据对接;
  • [外部编码前音频数据对接]支持PCM对接;
  • [外部编码后视频数据对接]支持外部H.264数据对接;
  • [外部编码后音频数据对接]外部AAC/PCMA/PCMU/SPEEX数据对接;
  • [推送端休眠设置]Windows平台支持休眠接口(设置成休眠模式后CPU会适当降低);
  • [编码后数据输出]Android平台支持输出编码后的H264/AAC数据到上层,方便对接第三方平台(如GB28181)对接;
  • [扩展录像功能]完美支持和录像SDK组合使用,录像相关功能,可参见”Windows/Android/iOS录像SDK“;
  • [裁剪模式]Android/iOS平台支持特定分辨率摄像头裁剪模式设置;
  • [服务器兼容]支持自建服务器(如Nginx、SRS)或CDN。

感兴趣的开发者可自行参考。

数据推送选择GB28181、RTSP还是RTMP?相关推荐

  1. HTML5数据推送SSE原理及应用开发

    JavaScript表达行为,CSS表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数 ...

  2. java 推送数据给js,Node.js实现数据推送

    场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器). 后端推送数据的解决方案有很多,比如轮询.Comet.WebSocket. 1. 轮询对于后端来说开发成本最低,就是按照传统的方式 ...

  3. C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表

    本文主要是我在刚开始学习 SignalR 的技术总结,网上找的学习方法和例子大多只是翻译了官方给的一个例子,并没有给出其他一些经典情况的示例,所以才有了本文总结,我在实现推送简单的数据后,就想到了如何 ...

  4. HTML5支持服务器发送事件(Server-Sent Events)-单向消息传递数据推送(C#示例)

    传统的WEB应用程序通信时的简单时序图: 现在Web App中,大都有Ajax,是这样子: HTML5有一个Server-Sent Events(SSE)功能,允许服务端推送数据到客户端.(通常叫数据 ...

  5. 服务器之间数据文件推送,数据库数据推送到另外服务器

    数据库数据推送到另外服务器 内容精选 换一换 该方案优点是简单,容易上手,缺点是停机时间较长.因此它适用于数据量不大,或者允许停机的时间较长,并且在这个时间范围内能够完成的数据.由于云数据库RDS服务 ...

  6. html5数据推送应用开发 代码,HTML5数据推送应用开发

    目 录 前言 IX 第1章 SSE及其他 1 1.1 HTML5 2 1.2 数据推送 2 1.3 数据推送的其他名称 5 1.4 可能会用到SSE的应用 5 1.5 和WebSocket的对比 6 ...

  7. 企业微信机器人推送mysql_进阶功能|将数据推送到企业微信群机器人

    当通过金数据收集到新数据/新客资后,如何才能在企业微信中快速通知特定负责人进行处理呢? 小金特别准备了一份文档,帮助大家了解学习噢- 前期准备工作 1.金数据账户 2.WinDeal账户 3.企业微信 ...

  8. 关于云开发新服务“实时数据推送”,你需要了解的全在这了!

    "微信小程序工程师邓坤力带你了解如何利用千呼万唤始出来的云开发实时数据推送服务打造生动的小程序和小游戏!" 在数据库在小程序·云开发中的应用一文中,我们了解到实时数据推送作为云开发 ...

  9. 钉钉一行代码_利用Python快速搭建钉钉和邮件数据推送系统

    前面的文章我们写到了利用Python实现钉钉和邮件的数据推送,在数据处理这一块实现了对mysql和odps的数据获取和处理,可以满足常规业务大部分数据场景需求,在一家初创公司数据基础建设还不完善的时候 ...

最新文章

  1. 【计算机网络】数据链路层 : 广域网 ( 广域网概念 | PPP 协议 | PPP 协议功能 | PPP 协议组成 | PPP 协议帧格式 )
  2. kettle从入门到精通_数据分析师的全景职业规划,入门、转行都先看这篇
  3. 实时事件日志记录和聚合的平台——Sentry
  4. reddit_我在3天内疯狂地审查了Reddit上的50个投资组合,从中学到了什么。
  5. ubuntu解压缩zip/tar/tar.gz/tar.bz2
  6. 机器学习教程 一-不懂这些线性代数知识 别说你是搞机器学习的
  7. 加密和解码(不同加密方法:随机数,hash,出现次数)
  8. ORACLE HANDBOOK系列之十:字符集、编码以及Oracle的那些事
  9. AndroidStudio_安卓原生开发_android10中android11中_bitmap缩放大小不一致_解决方案---Android原生开发工作笔记154
  10. create-react-app 创建react应用环境变量(env)配置
  11. linux usb有线网卡驱动_Linux系统下安装USB无线网卡驱动方法
  12. Fomo玩法加持的PixelMaster为什么火了?
  13. 【一江水 一家人】 盘龙区打造铸牢中华民族共同体意识盘龙江示范带
  14. java 九九乘法口诀
  15. 08-OS X系统中将control和command键互换
  16. 那些你可能不知道的微信奇技淫巧
  17. 我的世界Faithful Java_我的世界:原来我们都被骗了,这才Minecraft真实的样貌
  18. 多道批处理操作系统和分时操作系统的概念
  19. 哈希算法(Hash函数)简单介绍
  20. linux系统 安装hp驱动怎么安装,Linux下安装HP打印机的驱动程序

热门文章

  1. Linux为什么受欢迎?
  2. ajax一次输出1万条数据库,后端接口一次给出100万条数据,请问你前端怎么分页处理...
  3. [转载] 字符串太长 pep8_Python f字符串– PEP 498 –文字字符串插值
  4. [转载] Java Formatter toString()方法与示例
  5. 密码学常用的算法填充模式_密码学的操作模式
  6. java uuid静态方法_Java UUID nameUUIDFromBytes()方法及示例
  7. 半素数c语言,非常简单的c题目 不懂 紧急求助
  8. Python | 如何创建模块(模块示例)?
  9. 第 3-4 课:数据结构——队列详解 + 面试题
  10. JS判断文本框中只能输入数字和小数点