目录

问题

解决

    Java:

    OC:

    C++:

    JS:


问题

WebRTC音视频通道建立的前提是完成SDP信息的交换,前端时间遇到了一个SDP信息交换失败的问题,非常具有代表性,今天周末特意整理了这篇文档。

报错信息:

Failed to set remote offer sdp: Called with SDP without DTLS fingerprint

解决

在进行详细介绍前,先把问题解决前后的SDP信息列一下。

之前SDP:

v=0
o=- 995255733528268584 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS ARDAMS
m=video 9 RTP SAVPF 96 97 98 99 100 101 127
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:3wNq
a=ice-pwd:C4nlIyp5n72lHo+DiK HEaDw
a=ice-options:trickle renomination
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http:  www.webrtc.org experiments rtp-hdrext abs-send-time
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 http:  www.ietf.org id draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http:  www.webrtc.org experiments rtp-hdrext playout-delay
a=extmap:6 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:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:ARDAMS ARDAMSv0
a=rtcp-mux
a=rtcp-rsize
a=crypto:0 AES_CM_128_HMAC_SHA1_80 inline:UbJzJZkVOi05s66TuBAhj0qRgomFkj7DdBB6B+vH
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=rtpmap:99 rtx 90000
a=fmtp:99 apt=98
a=rtpmap:100 red 90000
a=rtpmap:101 rtx 90000
a=fmtp:101 apt=100
a=rtpmap:127 ulpfec 90000
a=ssrc-group:FID 877222065 2034621659
a=ssrc:877222065 cname:aqxYNZ4Y1vkk8ADA
a=ssrc:877222065 msid:ARDAMS ARDAMSv0
a=ssrc:877222065 mslabel:ARDAMS
a=ssrc:877222065 label:ARDAMSv0
a=ssrc:2034621659 cname:aqxYNZ4Y1vkk8ADA
a=ssrc:2034621659 msid:ARDAMS ARDAMSv0
a=ssrc:2034621659 mslabel:ARDAMS
a=ssrc:2034621659 label:ARDAMSv0
m=audio 9 RTP SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:3wNq
a=ice-pwd:C4nlIyp5n72lHo+DiK HEaDw
a=ice-options:trickle renomination
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http:  www.webrtc.org experiments rtp-hdrext abs-send-time
a=extmap:4 http:  www.ietf.org id draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:ARDAMS ARDAMSa0
a=rtcp-mux
a=crypto:0 AES_CM_128_HMAC_SHA1_80 inline:UbJzJZkVOi05s66TuBAhj0qRgomFkj7DdBB6B+vH
a=rtpmap:111 opus 48000 2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC 16000
a=rtpmap:104 ISAC 32000
a=rtpmap:9 G722 8000
a=rtpmap:102 ILBC 8000
a=rtpmap:0 PCMU 8000
a=rtpmap:8 PCMA 8000
a=rtpmap:106 CN 32000
a=rtpmap:105 CN 16000
a=rtpmap:13 CN 8000
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:2359316182 cname:aqxYNZ4Y1vkk8ADA
a=ssrc:2359316182 msid:ARDAMS ARDAMSa0
a=ssrc:2359316182 mslabel:ARDAMS
a=ssrc:2359316182 label:ARDAMSa0

之后SDP:

v=0
o=- 4961499810910361213 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1 2
a=msid-semantic: WMS ARDAMS
m=video 9 UDP TLS RTP SAVPF 96 97 98 99 100 101 127
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:tHps
a=ice-pwd:5U6L f6Xrq8jNLLDwygFr7cN
a=ice-options:trickle renomination
a=fingerprint:sha-256 BF:BC:68:7E:2E:D0:CF:FD:AE:9C:F0:A0:72:C9:2F:F