GB28181

GB28181 #

GB28181 协议是设备端主动向服务端发起注册消息,并定时发送保活消息,服务端收到后就认为设备在线,超时收不到保活的话就认为设备离线了。客户端发起播放视频请求时,服务端给指定的设备发送 INVITE 请求,通知设备将指定的通道的视频推送到服务端,服务端再转发给客户端,用户就可以播放了。

GB28181 传输协议是 RTP,去掉 RTP 头部,剩余数据为 H264 PS 流,可使用 VLC 直接播放

GB28181 报文 #

国标 IPC 的 IP 为 192.168.10.8, IPC 本地 SIP 端口为 60719, SIP ID 为 34020000002000000719;

SIP 服务器的 IP 为 192.168.10.10, SIP 服务器的端口为 57030, SIP ID 为 34020000002000000001。

整个国标信令部分基于 UDP 协议进行传输。

开发基于 resiprocate/resiprocate Github stars

注册(REGISTER#

注销(CANCEL#

心跳(Keepalive#

INVITE #

云台控制(PTZ#


GB28181 协议版本 #

2012 年,GB/T-28181 的第一版标准 #

国家为了规范安防行业的设备平台互联互通,在 2012 年出台了 GB/T-28181 的第一版标准

协议对流媒体的规范还是比较好(H.264 + G711 封装成 PS 流,再经过 RTP 协议进行实时传输),但是控制方面有很多不足,相对于当前流行的 ONVIF 协议在控制信令上还是有很多不足。

2014 年,修改补充文件 #

后续公安一所又感觉 2011 版本的协议不能满足方方面面的信令需求,于是增加了修改补充协议 这次的补充,完善之前协议各地方说辞有误或是不清晰的地方,还增加了不少的信令需求,如:回放、下载、配置、传输协议、设备控制(拉宽放大、缩小)等待一系列的功能。

2016 年,GB/T-28181 - 2016 版本 #

2016 年公安部一所又推出了 GB/T-28181 - 2016 版本,此版本就是对之前的 2011 版和修改补充版进行合并,并增加一些信令,说明制定协议的同志们一直都在努力。

这次的版本应该算是阶段性的版本了,短时间内应该不会修改了。

UDP vs TCP 主动 vs TCP 被动 #

在 GB28181 的 2016 版中,对于媒体流的传输在原有 UDP 传输的基础中,增加了主动 tcp 和被动 tcp 的方式。

RTP over UDP vs RTP over TCP

# 默认 UDP
m=audio 6000 RTP/AVP 8

# 指定 TCP
m=video 6000 TCP/RTP/AVP 96

主动 TCP vs 被动 TCP

a=setup:active

a=setup:passive
UDP #

这个是普遍的传输方式

GB28181 服务端在发 invite 时,在携带的 SDP 中包含了接收媒体的端口,设备端(被呼叫端)收到 invite 后,解析该端口,通过 UDP 将媒体流发向该端口。

TCP 被动 #

GB28181 服务端在发 invite 时,在携带的 SDP 中包含了接收媒体的端口,并监听该端口的媒体数据,设备端(被呼叫端)收到 invite 后,解析该端口,通过 TCP 将媒体流发向该端口。

TCP 主动 #

设备端(被呼叫端)告知服务端自己的媒体流 tcp 端口,服务端主动去连接设备端(被呼叫端)的该端口,获取数据。

参考:


GB28181 的协议栈实现 #

GB/T-28181 协议其实就是在国际上通用的 SIP 协议进行私有化定制, 流媒体方面就是在国际最流行的编码上进行封装(当然也有我们国家的编码标准 SVAC)。

libosip + libexosip + libxml 来实现 IPC 和平台协议功能,前面两者负责 sip 协议的实现,libxml 用来封装和解析实体信令。通过 3~4 年的市场应用感觉挺稳定的。

流媒体方面:从编码中获取的 h.264 + g711 的视音频帧,进行 PS 媒体协议封装(自己写的 PS 封装协议),再经过 RTP 传输协议(自己实现)发送至平台。

平台对收到的 RTP 流媒体进行解 RTP, 解 PS,再进行 h.264 + g711 的解码。


SIP 协议 #

会话初始协议

SIP 协议是一个应用层的点对点协议,用于初始、管理和终止网络中的语音和视频会话,是 GB28181 的核心之一。

会话发起协议( Session Initiation Protocol,缩写  SIP)是一个由  IETF MMUSIC 工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信在线游戏虚拟现实等多种多媒体元素在内的交互式用户会话。2000 年 11 月,SIP 被正式批准成为  3GPP  信号协议之一,并成为  IMS  体系结构的一个永久单元。SIP 与  H.323  一样,是用于  VoIP  最主要的信令协议之一。

osip vs exosip #

osip #

oSIP is a free software library for VoIP applications implementing lower layers of Session Initiation Protocol (SIP).

oSIP 的开发开始于 2000 年 7 月,第一个版本在 2001 年 5 月发布。

oSIP 采用 ANSI C 编写,而且结构简单小巧,所以速度特别快。

它并不提供高层的 SIP 会话 控制 API,它主要提供一些解析 SIP/SDP 消息的 API 和事务处理的状态机。

oSIP 不提供任何快速产生请求消息和响应消息的方法,所有请求消息和响应消息的形成必须调用一组 sip message api 来手动组装完成,

oSIP 的作者还开发了基于 oSIP 的 UA lib:exosip 和 proxy server lib:partysip

Software using oSIP

  • eXosip, the “eXtended osip” library. An extension of oSIP for softphone implementation written by Aymeric Moizard.
  • GNU SIP Witch

exosip #


pjsip #

PJSIP 是一个开源的 SIP 协议库,它实现了 SIP、SDP、RTP、STUN、TURN 和 ICE。PJSIP 作为基于 SIP 的一个多媒体通信框架提供了非常清晰的 API,以及 NAT 穿越的功能。PJSIP 具有非常好的移植性,几乎支持现今所有系统:从桌面系统、嵌入式系统到智能手机。

PJSIP 同时支持语音、视频、状态呈现和即时通讯。PJSIP 具有非常完善的文档,对开发者非常友好。

PJSIP 由 Benny Prijono、Perry Ismangil 在 2005 年创建,之后不久,Nanang Izzuddin、Sauw Ming 加入开发团队。2006 年成立 Teluu Ltd.,成为开发和维护 PJSIP 的公司。PJSIP 采用双 License:GPLv2 以及商业许可证,开发者可以根据需要选择不同的 License。


本文访问量

本站总访问量

本站总访客数