报价和响应都属于会话描述协议SDP )。
SDP是描述会话的协议,通常一次音视频通话最基本需要的媒体描述是什么?
最基本的是音视频数据格式和网络传输目的地,当然也包括其他配置信息。
为什么双方要描述媒体信息?
由于通信双方的媒体能力不正确,例如在视频通话中,一个客户端支持H264、VP8,另一个客户端只支持H264。 例双方正常动作时
的通话,视频格式那个只能使用H264。 因为在视频传输过程中编码和解码也有关系,所以用VP8的编码H264无法解码。
以下是OfferSDP的部分说明。
{
type=提供,##SDP型
数据=
{
说明: SDP :
v=0 ##SDP协议版本,值固定为0
o=-89818842460660585432使用inip 4127.0.0 # # IP v4
s=-
t=0
a=组:捆绑0 1
a=退出地图-允许混合
a=msid-semantic 3360 WMS0buaxaggmqzg 89 Eznopnajjj4m9i9 ka 246 Bt
m=音频9 UDP/TLS/RTP/saVPF 1110310490810610513110112113126 # #音频的传输描述UDP/TLS/RTP/SA VPF
c=IN IP4 0.0.0.0 ##网络连接IPV4
a=rtcp:9 IN IP4 0.0.0.0 ##显示了RTCP使用的IP和端口
a=ice-u标志: udx/# # ice用户名
a=ice-pwd : ovznphualcf 9u a2 hqg2px/# # ice密码
a=ICE-options:trickle ##表示本地支持的ice选项
a=fingerprint : sha-256 DC :4 A33608433606 F3360183: D :253:2 B :6 B :7 B :1 B :1 FA :1 FA : D 2:10 D 2:11 a :3:6 a :6:2 e 3: d 6: d 6: e 63360 c 433607436089:9 d # # dtls证书的说明
a=setup:actpass ##可以用作服务器,也可以用作客户端选项,由answer确定
a=mid:0 ##介质的id
##扩展头
a=EXT map :1 URN : IETF :参数: RTP-HDR EXT : SSRC -音频-级别# #介绍了本地支持的RTP扩展
a=ext map :2http://www.webrtc.org/experiments/RTP-HDR ext/ABS-send-time # #介绍了本地支持的RTP扩展
a=ext map :http://www.IETF.org/id /草案热电偶传输宽带抄表扩展- 01 # #在本地受支持
a=EXT map :4 URN : IETF :参数: RTP-HDR EXT : SDES 3360 MID # #介绍了本地支持的RTP扩展
a=EXT map :5 URN : IETF :参数: RTP-HDR EXT : SDES 3360 RTP-Stream-ID # #介绍了本地支持的RTP扩展
a=ext map :6 URN : IETF :参数: RTP-HDR EXT : SDES : repaired-RTP-Stream-ID # #是本地支持的RTP扩展
接收# # #流的方式接收发送
a=发送记录
a=msid :0 buaxaggmqzg 89 Eznopnajjj 4m9i9ka 246 BT 371 D4C 12-F60C-4 DF5-8D D6-1B 6D 25 AC 5a5e
rtcp rtc共享端口的多路复用
a=rtcp-mux
a=rtpmap:111 opus/48000/2 ##编码格式与m=audio之后的111个编号相对应
a=RTCP-FB :111传输- CC # #编码格式与m=audio后的111个号码相对应
a=fmtp :111分钟时间=10; useinbandfec=1 ##编码格式对应于m=audio后的111个编号
a=rtpmap:103 ISAC/16000 ##与音频编码格式、采样率m=audio之后的103个号码相对应
a=rtpmap:104 ISAC/32000 ##音频编码格式,采样率m=对应于音频之后的104个号码
a=rtpmap:9 G722/8000 ##对应于音频编码格式、采样率m=audio之后的9个号码
a=rtpmap:0 PCMU/8000 ##对应于音频编码格式、采样率m=audio之后的0的编号
a
=rtpmap:8 PCMA/8000 ## 音频编码格式、采样率 m=audio 后面的8的编号对应
a=rtpmap:106 CN/32000 ## 音频采样率 m=audio后面的106的编号对应
a=rtpmap:105 CN/16000 ## 音频采样率 m=audio后面的105的编号对应
a=rtpmap:13 CN/8000 ## 音频采样率 m=audio后面的13的编号对应
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3550220746 cname:A2E1dRlLVRKOhRFm
a=ssrc:3550220746 msid:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT 371d4c12-f60c-4df5-8dd6-1b6d25ac5a5e
a=ssrc:3550220746 mslabel:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT
a=ssrc:3550220746 label:371d4c12-f60c-4df5-8dd6-1b6d25ac5a5e
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 121 127 120 125 107 108 109 124 119 123 118 114 115 116 ##视频的传输方式 UDP/TLS/RTP/SAVPF
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:uDX/ ##ICE用户名
a=ice-pwd:OVzNPHUALcf+9uA2H+Qg2px/ ##ICE密码
a=ice-options:trickle ##描述了本地支持的ICE选项
a=fingerprint:sha-256 DC:4A:84:6F:18:D3:25:2B:6E:7B:1E:FA:D2:01:82:AE:E7:5E:40:2A:8A:33:6A:32:2E:D6:D6:E6:C4:74:89:9D ##DTLS证书描述
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:12 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:6 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT fa5bc625-14ac-4b7d-95ce-e7c5c589a1d6
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
## 99 与 98关联通道; 98有数据丢失重传到99
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=102
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=127
a=rtpmap:125 H264/90000
a=rtcp-fb:125 goog-remb
a=rtcp-fb:125 transport-cc
a=rtcp-fb:125 ccm fir
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=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=124
a=rtpmap:123 H264/90000
a=rtcp-fb:123 goog-remb
a=rtcp-fb:123 transport-cc
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
a=rtpmap:118 rtx/90000
a=fmtp:118 apt=123
a=rtpmap:114 red/90000 ##丢包的策略
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 ulpfec/90000 ## 带宽允许的情况下,多传包
a=ssrc-group:FID 795740467 1564603005
a=ssrc:795740467 cname:A2E1dRlLVRKOhRFm
a=ssrc:795740467 msid:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT fa5bc625-14ac-4b7d-95ce-e7c5c589a1d6
a=ssrc:795740467 mslabel:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT
a=ssrc:795740467 label:fa5bc625-14ac-4b7d-95ce-e7c5c589a1d6
##
a=ssrc:1564603005 cname:A2E1dRlLVRKOhRFm
a=ssrc:1564603005 msid:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT fa5bc625-14ac-4b7d-95ce-e7c5c589a1d6
a=ssrc:1564603005 mslabel:0BUAXaGgmqZg89ezNoPNAJjJ4M9I9ka246bT
a=ssrc:1564603005 label:fa5bc625-14ac-4b7d-95ce-e7c5c589a1d6
“,
“type”:”offer”},
“from”:”061762″,
“media”:”video”,
“roomId”:”99″,
“sessionId”:”061762-347690″,
“to”:”347690″
}
备注:
可以通过修改a=rtpmap 编码的顺序来达到优先使用某种编码的目的
可以关注,后续会持续分享,大家多多交流。