当前位置: 代码迷 >> 综合 >> Webrtc 中的SDP协议字段解释
  详细解决方案

Webrtc 中的SDP协议字段解释

热度:97   发布时间:2024-02-02 05:38:12.0

SDP(Session Description Protocol)会话描述协议,是一种会话描述格式,不是传输协议(例如RTP,RSTP是传输协议),SDP协议是也是基于文本的协议。SDP很早就用于流媒体中来描述媒体信息,例如RTSP的SDP文件,现在的WebRTC也是用SDP来描述媒体信息的。

在WebRTC中,SDP主要用来描述:
?设备支持的媒体能力,包括编解码器等
?ICE候选地址
?流媒体传输协议

SDP协议基于文本,格式非常简单,可扩展性比较强。它由多个行组成,每一行都为键值格式<类型>=<值> (形式如: t=v),<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。

<type>=<value>

其中,type表示属性名,value表示属性值,具体格式与type有关。

下面是一个SDP的样本:

v=0
o=mike 1234567890 1234567890 IN IP4 host.domain.com
s=
c=IN IP4 host.domain.com
t=0 0
m=audio 8860 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 8861 RTP/AVP 31
a=rtpmap:31 H261/90000
其中:
1. v=代表协议版本号
2. o=代表会话发起者,包括username、sessionId等
3. s=代表session名称,为唯一字段
4. c=代表连接信息,包括网络类型、地址类型、地址等
5. t=代表会话时间,包括开始/结束时间,均为0表示持久会话
6. m=代表媒体描述,包括媒体类型、端口、传输协议、媒体格式等
7. a=代表附加属性,此处用于对媒体协议进行扩展

m的格式如下:

m=<media> <port> <proto> <fmt> ...
m=<media> <port>/<number of ports> <proto> <fmt> ...

其中:<media>可以是,"audio","video", "text", "application" and "message"。<port>是媒体传送的端口号,它依赖于c=和<proto>。<proto> 可以是,udp,RTP/AVP和RTP/SAVP。

其它一些格式如下:

v=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>c=<nettype> <addrtype> <connection-address>b=<bwtype>:<bandwidth>t=<start-time> <stop-time>r=<repeat-interval> <active duration> <offsets from start-time>z=<adjustment time> <offset> <adjustment time> <offset> ....
k=<method>
k=<method>:<encryption key>
a=<attribute>
a=<attribute>:<value>