GB/T28181-2016 SDP定义和音视频传输模式解读
Posted 音视频牛哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GB/T28181-2016 SDP定义和音视频传输模式解读相关的知识,希望对你有一定的参考价值。
SDP定义
联网系统中SIP消息体中携带的SDP内容应符合IETF RFC 2327的相关要求。应有如下字段:Session description:
v=( protocol version)
o=(owner/creator and session identifier)s=(session name)
u—*(URl of description)
c=* (connection information-not required if included in all media)Time description :
t=(time the session is active)Media description
m= (media name and transport address)
c=*(connection information-optional if included at session-level)b=*(bandwidth information)
a—*( zero or more media attribute lines)y=* (SSRC)
f—*(媒体描述)
说明:
a字段:启用IETF RFC 4566中对a字段的定义a=rtpmap:〈 payload type)〈encoding name)/(clock rate〉[/encoding parameters>]中的(encoding name) ,利用该属性携带编码器厂商名称(如:企业1或企业⒉编码名称DAHUA或HIKVISION)。该属性表明该流为某厂商编码器编码且是不符合本标准规定的媒体流,符合本标准规定的媒体流无需该属性。
例如: a=rtpmap:96 DAHUA/90000;
a=rtpmap:96 HIKVISION/90000。a字段有下列格式:
——a字段可携带倍速参数﹐用于文件下载时控制下载进度。格式如下:
a=downloadspeed:下载倍速(取值为整型)
-a字段可携带文件大小参数,用于下载时的进度计算。格式如下:a=filesize:文件大小(单位:Byte)
—a字段可携带setup,connection作为TCP连接协商参数﹐用于TCP方式传输媒体流服务端、客户端的协商,协商机制参考IETF RFC 4571的定义。格式如下:
a=setup:TCP连接方式(表示本SDP发送者在RTP over TCP连接建立时是主动还是被动发起TCP连接,"active”为主动,"passive”为被动)
a=connection:new(表示采用RTP over TCP传输时新建或重用原来的TCP连接,可固定采用新建TCP连接的方式)
—a字段可携带SVC参数,用于视频传输时的分辨率或帧频控制。格式如下:
a=svcspace:空域编码方式[取值为整型。空域编码方式,取值0:不使用;1:1级增强(1个增强层);2:2级增强(2个增强层);3:3级增强(3个增强层)]
a=svctime:时域编码方式[取值为整型。时域编码方式,取值0:不使用;1:1级增强(1个增强层);2:2级增强(2个增强层);3:3级增强(3个增强层)]
s字段:在向SIP服务器和媒体流接收者/媒体流发送者之间的SIP消息中,使用s字段标识请求媒体流的操作类型。"Play"代表实时点播;"Playback"代表历史回放;"Download"代表文件下载;“Talk”代表语音对讲。
u字段:u行应填写视音频文件的URI。该URI取值有两种方式:简捷方式和普通方式。简捷方式直接采用产生该历史媒体的媒体源(如某个摄像头)的设备ID(应符合6.1.2的规定)以及相关参数,参数用“:”分隔;普通方式采用http://存储设备ID[/文件夹]*/文件名,[/文件夹]*为0-N级文件夹。
m字段:m字段描述媒体的媒体类型、端口﹑传输层协议、负载类型等内容。媒体类型采用“video”标识传输视频或视音频混合内容,采用“audio”标识传输音频内容;传输方式采用“RTP/AVP”标识传输层协议为RTP over UDP,采用“TCP/RTP/AVP”标识传输层协议为RTP over TCP。
例如:
“m=video 6000 RTP/AVP 96”标识媒体类型为视频或视音频,传输端口为6000,采用RTP overUDP传输方式,负载类型为96。
“m=video 6000 TCP/RTP/AVP 96”标识媒体类型为视频或视音频,传输端口为6000,采用RTPover TCP传输方式,负载类型为96。
“m=audio 8000 RTP/AVP 8”标识媒体类型为音频,传输端口为8000,采用RTP over UDP传输方式,负载类型为8。
t字段:当回放或下载时,t行值为开始时间和结束时间,用“”分隔,时间格式见IETF RFC 4566一2006的5.9,采用UNIX时间戳,即从1970年1月1日开始的相对时间。开始时间和结束时间均为要回放或下载的音视频文件录制时间段中的某个时刻。
y字段:为十进制整数字符串,表示SSRC值。格式如下: dddddddddd。其中,第1位为历史或实时媒体流的标识位,0为实时,1为历史;第⒉位至第6位取20位SIP监控域ID之中的4到8位作为域标识,例如“13010000002000000001”中取数字“10000”;第7位至第10位作为域内媒体流标识,是一个与当前域内产生的媒体流SSRC值后4位不重复的四位十进制整数。
f字段:f = v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率。
音视频传输模式解读
联网系统在进行视音频传输及控制时应建立两个传输通道:会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令;媒体流通道用于传输视音频数据,经过压缩编码的视音频流采用流媒体协议 RTP/RTCP传输。
GB28181平台接入这块,主要有以下三种模式:UDP、TCP被动、TCP主动模式。
- UDP模式:国标平台端启动UDP端口监听,并通过invite信令交互的方式,通知接入端接收端口,设备接入端主动向国标平台端发起音视频数据推送;
- TCP被动(passive):国标平台端启动TCP端口监听,并通过invite信令交互的方式,通知接入端接收端口,接入端主动向国标平台端发起音视频数据推送,适用于接入端地址不确定,国标平台端端地址确定的情况下;
- TCP主动(active):接入端通知国标平台端监听的TCP端口信息,国标平台端主动连接接入端拉流,场景特殊,适用范围很小。
SDP
SDP语法
一个SDP描述含有会话级信息和媒体级信息。会话级信息应用于整个会话。例如:它能成为会话始发者或者会话的名字。媒体级信息作用于特殊的媒体流。例如:它能作为一个编码器给音频流编码或者是给视频流发送端口号。
一个SDP会话描述以会话级信息和媒体级信息开始,如果任意一个出现,另外一个就接着在后面出现。会话级部分以v=0开始,v代表类型,0为值,意思是协议版本号为0(SDP版本为0).接下来的行直到媒体级部分或者会话描述的终点,提供了整个会话的信息。
媒体级部分以m行开始。下面的行直到下一个m行出现,或者直到会话描述的终点,提供了特定媒体流的信息。
m=<媒体类型><端口号><传输协议><媒体格式>
<端口号>说明了在什么地方能够接收到媒体。
<传输协议>域通常取值为RTP/AVP,但如果不使用RTP协议,也能够取其他值。
<媒体格式>取决于媒体传输的类型。对于音频,它就是正在使用的编码解码器。
下面是一个SDP会话描述的例子:
/*****************会话级部分-开始*****************/
v=0
//协议版本号为0
o=Bob 2890844526 289084207 IN IP4 131.160.1.112
//o行说明了会话的创建者(Bob)和他的站点的地址
s=SIP Seminar
//s行包含了会话的名字
i=A Seminar on the Session Initiation Protocol
//i行包含了会话的一般信息
u=http://www.cs.columbia.edu/sip
//u行提供了统一资源定位器(URL,Uniform Resource Locator),在这个地址中能够检索到有关会话主题的更多内容
//e行含有会话联系人的E-mail地址
c=IN IP4 224.2.17.12/127
//c行描述了能够接收到会话的多播地址
t=2873397496 2873404696
//t行说明了什么时候会话是激活的
a=recvonly
//a行说明了这个会话不是交互式的,它只能接收
/*****************会话级部分-结束*****************/
/*****************媒体级部分-开始*****************/
m=audio 49170 RTP/AVP 0
//RTP/AVP指对于RTP的音频/视频描述文件,经过编码的音频和视频是在UDP上使用RTP传输,值0意味音频是在单个信道中使用PCM u-law进行编码和以8kHz的频率采样。
a=rtpmap:0 PCMU/8000
//a=rtpmap行传送有关媒体使用的信息,如时钟频率和信道数量。
m=vidio 51372 RTP/AVP 31
a=rtpmap:31 H261/9000
//媒体格式号31是指H.261协议并且使用90kHz的时钟频率
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
//第一个媒体流的类型为音频,第二个和第三个媒体流的类型为视频
/*****************媒体级部分-结束*****************/
v |
协议版本 |
b | 带宽信息 |
o | 会话的主人和会话标识 |
z | 调节时区 |
s | 会话的名称 |
k | 密钥 |
i | 会话信息 |
a | 属性行 |
u | 含有会话描述的URL |
t | 会话激活的时间 |
e | 获得会话信息的E-Mail地址 |
r | 会话重复的次数 |
p | 获得会话信息的电话号码 |
m | 媒体行 |
c | 连接信息 |
i | 媒体行信息 |
扩展SDP
媒体属性行(也就是a行)提供了一种扩展SDP的方法。当应用需要一个在SDP中没有包含的特征时,可以通过增加a行来包含这个特征。例如,如果多播会话的创建者想要接收者以某种特定音量播放音频,他或她能够定义一个新的媒体属性,并把这种新媒体属性加在媒体级部分的末端。
m=audio 49170 RTP/AVP 0
a=volume:8
随后,理解这个新a行的应用程序就以音量8播放音频。当应用程序发现一个它不能理解的a行时,就简单地忽视这一行并继续往下处理,就像没有遇到此行一样。尽管它不能以正确的音量回放音频,不能理解新行a=volume的应用程序仍然能够正确接收该媒体。
——来自Gonzalo著,白建军译《SIP揭密》
以上是关于GB/T28181-2016 SDP定义和音视频传输模式解读的主要内容,如果未能解决你的问题,请参考以下文章
GB/T28181-2016基于RTP的视音频数据封装和技术实现