在国际网站做外贸需要条件,天猫网店代运营,刷神马seo排名首页排名,游戏网站开发找什么人可建GB/T28181流媒体相关协议详解 文章目录 GB/T28181流媒体相关协议详解1 GB/T28181协议中使用的应用层协议介绍2 实时视频点播协议交互流程2.1 设备注册2.2 设备保活2.3 视频播放 总结 本文主要主要针对28181协议中视频流的部分#xff0c;来阐述视频流通过28181协议如何进行视频…GB/T28181流媒体相关协议详解 文章目录 GB/T28181流媒体相关协议详解1 GB/T28181协议中使用的应用层协议介绍2 实时视频点播协议交互流程2.1 设备注册2.2 设备保活2.3 视频播放 总结 本文主要主要针对28181协议中视频流的部分来阐述视频流通过28181协议如何进行视频会话和视频传输的。本文主要介绍28181协议中引用的协议、视频封装格式、实时视频点播协议交互流程等内容。 1 GB/T28181协议中使用的应用层协议介绍
28181协议规范中涉及到SIP、SDP、RTP、RTCP、RTSP等应用层协议其中SIPXML主要用于消息交互SIPSDP主要用户视频会话RTP/RTCP主要用于媒体流传输控制RTSP主要用户录像回放。有关各种协议的详细介绍可参考如下文章本文不做详细介绍
SIP协议:参照文章 sip协议介绍SDP协议参照文章 h264和h265视频流SDP描述详解RTCP/RTCP:参照文章 RTP/RTCP协议详解RTSP:参照文章 RTSP协议详解
为方便以后查看关注公众号壹零仓发送消息获取相关文章比如发送RTP可获取RTP协议的介绍。
2 实时视频点播协议交互流程
本章节主要针对实时视频点播协议进行详细介绍28181发起视频会话前首先视频终端设备需要注册到国标平台国标平台需要查询到设备的摄像头ID根据摄像头ID发起视频会话进行音视频传输。 本章节抓取的协议的实验环境如下
视频终端设备海康威视的IPC国标平台EasyGBS
有关国标平台EasyGBS的使用介绍后面会单独出一篇文章进行介绍。 28181传输层支持TCP和UDP视频申请支持主动模式和被动模式本文主要以常用的UDP被动模式为例说明交互流程后续文章会详细介绍视频主被动模式以及基于TCP的传输。
2.1 设备注册
GB/T 28181协议介绍 的文章中已经介绍了设备注册流程设备注册流程图如下
REGISTER不携带鉴权信息消息实例如下
REGISTER sip:340200000020000000013402000000 SIP/2.0
Via: SIP/2.0/UDP 10.45.12.141:5060;rport;branchz9hG4bK873415819
From: sip:340200000011100000023402000000;tag292191181
To: sip:340200000011100000023402000000
Call-ID: 924327262
CSeq: 1 REGISTER
Contact: sip:3402000000111000000210.45.12.141:5060
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0协议详解
第1行SIP消息的方法是REGISTER34020000002000000001是国标服务器的国标ID也就是EasyGBS端国标ID具体国标ID的编码方法可以参考GB/T 28181—2022中的附录D。3402000000指的是国标服务器的域国标IDSIP/2.0指的是SIP协议版本。第2行为Via头Via头中包含了发送请求方的相关信息SIP/2.0/UDP表示使用的是2.0版本的SIP协议使用的传输协议是UDP也可以使用TCP协议10.45.12.141:5060为请求发送方的IP、portVia头包含branch参数不能重复branch是一个事务IDTransaction ID用于区分同一个UA所发起的不同Transaction遵循IETF RFC3261规范的实现rport字段表示使用rport机制路由响应详情见IETF RFC35818一般为了nat穿越内网IPC向公网国标平台注册时需要带有此字段此时国标服务器会把从请求的UDP包中获取发送方外网对应的IP和端口在响应中返回给发送方。第3行From头From头中包含了请求发送方的逻辑标识在GB28181协议中是发送请求的设备国标ID和域名。tag参数是为了身份认证的值为随机数。第4行To头To头在SIP协议中是为了标明请求接收方的逻辑标识的在GB28181协议中填写的是发送请求的设备国标ID和域名。第5行Call-ID头Call-ID头是全局唯一的在同一个session中保持一致在不同session中不同。第6行CSeq头CSeq头用于标识命令顺序序号部分为无符号整数最大值为2^31。序号起始值是随机的后续在同一个session中依次递增。ACK和CANCLE中的CSeq需与INVITE中的Cseq保持一致。第7行Contact头Contact头包含源的URI信息用来给响应消息直接和源建立连接用。在GB28181协议中为SIP设备编码源IP地址端口。第8行Max-Forwards头Max-Forwards头用于设置包最大中转次数默认是70。第9行User-Agent头User-Agent头用于设置关于UA的信息用户可以自定义。第10Expires头Expires头表示超时时间。第11行Content-Length头Content-Length头表示消息体长度无消息体赋值0。
认证失败响应消息实例如下
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.45.12.141:5060;rport5060;received10.45.12.141;branchz9hG4bK873415819
From: sip:340200000011100000023402000000;tag292191181
To: sip:340200000011100000023402000000;tag53631846
CSeq: 1 REGISTER
Call-ID: 924327262
User-Agent: EasyGBS v200511
Content-Length: 0
Contact: sip:3402000000200000000110.45.12.83:5061
WWW-Authenticate: Digest realm3402000000,nonce29eb6d344c29a70a0997d173e937e693协议详解如下
第1行SIP/2.0 401 Unauthorized表示认证失败。第2行Via头因为请求带有rport所以响应中带有rport和received表示国标服务器通过udp包解析出来的发送端的PORT和IP分别赋值给rport和received。第3行与第四行与请求类似第5行CSeq头与请求类似表示服务端命令序列第6行Call-ID头与请求一致第7行User-Agent头与请求类似表示服务端UA信息第8行Content-Length头与请求类似表示消息体长度第9行Contact头与请求一致第10行WWW-Authenticate头WWW-Authenticate头用于配置服务端支持的认证方式及认证参数这里认证方式为digest。
REGISTER带有鉴权信息消息实例如下
REGISTER sip:340200000020000000013402000000 SIP/2.0
Via: SIP/2.0/UDP 10.45.12.141:5060;rport;branchz9hG4bK864745657
From: sip:340200000011100000023402000000;tag292191181
To: sip:340200000011100000023402000000
Call-ID: 924327262
CSeq: 2 REGISTER
Contact: sip:3402000000111000000210.45.12.141:5060
Authorization: Digest username34020000001110000002, realm3402000000, nonce29eb6d344c29a70a0997d173e937e693, urisip:340200000020000000013402000000, response42b636f290984b1d796907c882e4d5a8, algorithmMD5
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0这里相比第一次发送的REGISTER消息多了Authorization字段其字段内容为digest认证信息。
注册成功响应消息实例如下
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.45.12.141:5060;rport5060;received10.45.12.141;branchz9hG4bK864745657
From: sip:340200000011100000023402000000;tag292191181
To: sip:340200000011100000023402000000;tag424631862
CSeq: 2 REGISTER
Call-ID: 924327262
User-Agent: Easy SIP Server
Content-Length: 0
Date: 2022-11-07T17:22:22.710
Expires: 3600
Contact: sip:3402000000200000000110.45.12.83:5061头字段解析同上文这里不做过多描述。
2.2 设备保活
28181协议中规定了保活的消息类型Keepalive主要用于设备端向国标平台定时汇报设备状态进而实现服务器与设备之间的心跳检测机制一般当国标平台在两个心跳周期未接收到心跳则认为设备出下线所以为了保证设备与国标平台之间的正常通信设备端需要定时向国标平台发送保活协议协议流程如下
保活消息实例如下
MESSAGE sip:340200000020000000013402000000 SIP/2.0
Via: SIP/2.0/UDP 10.45.12.141:5060;rport;branchz9hG4bK999920179
From: sip:340200000011100000023402000000;tag1336295153
To: sip:340200000020000000013402000000
Call-ID: 1577903431
CSeq: 20 MESSAGE
Content-Type: Application/MANSCDPxml
Max-Forwards: 70
User-Agent: IP Camera
Content-Length: 164?xml version1.0 encodingGB2312?
Notify
CmdTypeKeepalive/CmdType
SN1822/SN
DeviceID34020000001110000002/DeviceID
StatusOK/Status
/Notifysip方法采用MESSAGEsip头前文已经详细介绍了这里针对消息体进行详解。 MESSAGE消息头中Content-type头为Content-type: Application/MANSCDPxml表示保活信息报送命令采用MANSCDP监控报警联网系统控制描述协议Monitoringand Alarming Network System Control Description Protocol协议格式定义消息体详细解释见GB/T28181-2022 A.2.5通知命令-状态信息报送部分GB/T28181-2022可通过关注公众号壹零仓发送协议规范来获取。
xml中Notify元素表示此消息是通知命令xml中CmdType表示命令类型这里为Keepalivexml中的SN表示序列号xml中的DeviceID表示设备IDxml中的Status表示设备状态这里为OK
保活消息响应实例如下
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.45.12.141:5060;rport5060;received10.45.12.141;branchz9hG4bK999920179
From: sip:340200000011100000023402000000;tag1336295153
To: sip:340200000020000000013402000000;tag698636847
CSeq: 20 MESSAGE
Call-ID: 1577903431
User-Agent: Easy SIP Server
Content-Length: 02.3 视频播放
前文已经介绍了视频播放的协议流程如下图所示
视频播放请求INVITE实例如下
INVITE sip:3402000000132000000210.45.12.141:5060;transportudp SIP/2.0
Via: SIP/2.0/UDP 10.45.12.83:5061;rport5061;branchz9hG4bK735682946
From: sip:340200000020000000013402000000;tag671682946
To: sip:3402000000132000000210.45.12.141:5060
Call-ID: 787682407
CSeq: 3 INVITE
Max-Forwards: 70
User-Agent: Easy SIP Server
Content-Length: 218
Content-Type: application/sdp
Contact: sip:3402000000200000000110.45.12.83:5061
Subject: 34020000001320000002:0200000002,34020000002000000001:0v0
o34020000002000000001 0 0 IN IP4 10.45.12.83
sPlay
cIN IP4 10.45.12.83
t0 0
mvideo 50000 RTP/AVP 96 98 97
arecvonly
artpmap:96 PS/90000
artpmap:98 H264/90000
artpmap:97 MPEG4/90000
y0200000002SIP方法为INVITE消息体为SDP这里对请求的SDP进行详细介绍
V表示协议版本默认直接赋值0O表示会话所有者标识originator and session identifier,o用户名 session id 会话版本 网络类型地址类型 地址,国标协议中用户名为国标ID这里为服务器IDsession id为0会话版本为0网络类型为IN地址类型为IPv4地址为服务器IP地址。S表示会话名称ssession name session description,会话名称默认为Play会话描述默认为空。C表示数据连接描述cnetworktype address type connection address, 网络类型为IN地址类型为IPv4地址为服务器IP地址。t表示会话活动时间tstart time stop time实时视频时都赋值为0。m表示媒体描述描述媒体类型、接收媒体流端口、传输层协议、负载类型等媒体类型采用video表示传输视频或音视频混合采用audio表示纯音频传输方式采用RTP/AVP表示采用RTP over UDP采用TCP/RTP/AVP表示传输层协议采用RTP over TCP,本实例中表示申请的媒体类型为音视频/视频接收媒体流的端口为50000传输层协议为RTP over UDP负载类型为96、98、97a表示媒体扩展属性arecvonly表示只接受媒体流artpmap表示rtp映射信息描述这里artpmap:96 PS/90000表示传输的PS流的payload为96采样率为90000artpmap:98 H264/90000表示传输的H264流的payload为98采样率为90000artpmap:97 MPEG4/90000表示传输的MPEG4流的payload为97采样率为90000。y表示SSRC值为十进制整数字符串格式为dddddddddd,第一位为0表示实时流为1表示历史流第2-6位为国标ID的4-8位第7-10位作为流媒体同步信源表示。
28181中规定了SDP各字段的含义具体可参照GB/T28181-2022 附录F。服务端发送INVITE携带的媒体信息表示国标服务器支持的流媒体。
INVITE响应消息实例
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.45.12.83:5061;rport5061;branchz9hG4bK735682946
From: sip:340200000020000000013402000000;tag671682946
To: sip:3402000000132000000210.45.12.141:5060;tag140553725
Call-ID: 787682407
CSeq: 3 INVITE
Contact: sip:3402000000111000000210.45.12.141:5060
Content-Type: application/sdp
User-Agent: IP Camera
Content-Length: 199v0
o34020000001110000002 261 261 IN IP4 10.45.12.141
sPlay
cIN IP4 10.45.12.141
t0 0
mvideo 15060 RTP/AVP 96
asetup:active
asendonly
artpmap:96 PS/90000
afilesize:0
y0200000002响应中的SDP描述的流媒体信息表示IPC支持的流媒体格式及传输方式IPC响应的SDP中包含了asetup:active这个字段只在TCP传输中起作用UDP可以忽略对于TCP传输包含此字段表示IPC主动连接国标服务器如果为asetup:passive表示IPC端为被动模式由国标服务器发起TCP连接。 通过SDP可以看出IPC发送的是PS封装的实时流payload为96采用UDP的传输模式发送流的源端端口为15060。国标协议支持最广泛的流媒体封装协议为PS有关PS的详细介绍可关注公众号壹零仓发送ps获取相关文章。
ACK消息实例
ACK sip:3402000000132000000210.45.12.141:5060;transportudp SIP/2.0
Via: SIP/2.0/UDP 10.45.12.83:5061;rport5061;branchz9hG4bK672682961
From: sip:340200000020000000013402000000;tag671682946
To: sip:3402000000132000000210.45.12.141:5060;tag140553725
Call-ID: 787682407
CSeq: 3 ACK
Max-Forwards: 70
User-Agent: Easy SIP Server
Content-Length: 0SIP的ACK方法通知IPC服务端已经准备好了可以发送媒体流了。
RTP/RTCP媒体流传输
通过视频会话可知接下来IPC应该主动向国标服务器发送RTP流RTP协议带的媒体流封装格式为PS传输层协议为UDPRTP源端地址为15060目的端地址为50000SSRC0200000002,抓包协议实例如下 从RTP解析上看与视频会话交互的信息一致。
总结
GB/T28181协议经过多个版本的迭代应用在音视频传输中已经非常完善了最新的协议版本已经支持TCP模式进行信令交互和音视频传输还支持主被动模式在跨网上也有很好的适应性。 关注公众号壹零仓发送28181获取更多28181文章。