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>
一个WEBRTC 的SFU服务器的Answer 的SDP 例子如下:
v=0
o=xmserver/3.8.168(XPE) 34384464 2 IN IP4 0.0.0.0
s=XMMSRtcLiveplay
t=0 0
a=ice-lite
a=group:BUNDLE 0 1
a=msid-semantic: WMS live/stream001
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 0.0.0.0
a=ice-ufrag:rd3v3637
a=ice-pwd:y672o638398pt7999a540767617b2000
a=fingerprint:sha-256 E7:75:47:36:51:28:5B:0C:41:06:7A:56:04:4C:A9:C9:53:3E:FD:A4:62:AF:E8:7F:2D:49:EB:1D:B5:A0:43:D5
a=setup:passive
a=mid:0
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=ssrc:464653 cname:9256z0w27yfk9q74
a=ssrc:464653 label:audio-5f20m46z
a=candidate:0 1 udp 2130706431 192.168.1.203 9800 typ host generation 0
a=candidate:1 1 udp 2130706431 192.168.1.204 8800 typ host generation 0
m=video 9 UDP/TLS/RTP/SAVPF 125
c=IN IP4 0.0.0.0
a=ice-ufrag:rd3v3637
a=ice-pwd:y672o638398pt7999a540767617b2000
a=fingerprint:sha-256 E7:75:47:36:51:28:5B:0C:41:06:7A:56:04:4C:A9:C9:53:3E:FD:A4:62:AF:E8:7F:2D:49:EB:1D:B5:A0:43:D5
a=setup:passive
a=mid:1
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:125 H264/90000
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 nack
a=rtcp-fb:125 nack pli
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=ssrc:464654 cname:9256z0w27yfk9q74
a=ssrc:464654 label:video-ug0695np
a=candidate:0 1 udp 2130706431 192.168.1.203 9800 typ host generation 0
a=candidate:1 1 udp 2130706431 192.168.1.204 8800 typ host generation 0
本文深入解析了SDP(会话描述协议),一种用于描述媒体信息的文本协议,常见于WebRTC和流媒体应用中。文章详细阐述了SDP的格式、属性及在WebRTC中的作用。

770

被折叠的 条评论
为什么被折叠?



