簡體   English   中英

SDP 問題:WebRTC 連接失敗 Firefox 但不是 Chrome

[英]SDP issues: WebRTC connection fails Firefox but not Chrome

我正在研究 WebRTC 流式傳輸,它將視頻從設備流式傳輸到瀏覽器。 這種流在 Chromium 瀏覽器中工作得很好,但在 Firefox 中失敗。 SDP 交換出現故障,然后停止連接的 rest(在 SDP 交換后沒有發送 ICE 候選)。

我發現 Firefox 的答案 SDP 存在一些問題,但我還沒有發現問題的原因:SDP 提到 VP8 但我們只使用 H264; m=video 0 具有端口 0,但通常非零; 我通常會得到一條 a=inactive 行; a=sendrecv 應該是 a=recvonly; 缺少許多其他行(例如,特定於 ICE 的行)

SDP 示例如下:

Example SDP offer from the device while using Firefox (Chrome has a similar format):


v=0
o=- 1709142607078008990 0 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-options:trickle
a=group:BUNDLE video0
m=video 9 UDP/TLS/RTP/SAVPF 96
c=IN IP4 0.0.0.0
a=setup:actpass
a=ice-ufrag:3/ygyy34xZMRXsru4Z1KuPht0mJvnSqj
a=ice-pwd:0stYVWAG9GKvu+vwp8v5ZRU+WaBdIoGp
a=rtcp-mux
a=rtcp-rsize
a=sendrecv
a=rtpmap:96 H264/90000
a=rtcp-fb:96 nack pli
a=framerate:9
a=fmtp:96 packetization-mode=1;profile-level-id=4d4016;sprop-parameter-sets=Z01AFo2NQFAX/LgLcBAQFAAAD6AAARlDoYAL/wAD0JLvLjQwAX/gAHoSXeXCgA==,aO44gA==
a=ssrc:984898564 msid:user2537555540@host-7396b709 webrtctransceiver30
a=ssrc:984898564 cname:user2537555540@host-7396b709
a=mid:video0
a=fingerprint:sha-256 2D:05:6B:57:E7:93:01:DE:CA:BB:57:EE:93:F6:28:3F:1A:96:5D:E9:EC:CB:33:EF:2F:96:DE:68:F0:F7:D2:98


Example SDP answer from Firefox, with comments pointing out questionable lines:


v=0
o=mozilla...THIS_IS_SDPARTA-88.0 4439569731226206324 0 IN IP4 0.0.0.0
s=-
t=0 0
a=sendrecv                           // Often or always is recvonly in other browsers, not sendrecv
a=fingerprint:sha-256 7A:C6:F8:FF:57:1E:E5:63:86:09:A2:CB:38:ED:59:45:7D:06:63:B8:68:0A:71:89:18:54:85:59:22:8A:DD:A7
a=ice-options:trickle
a=msid-semantic:WMS *
m=video 0 UDP/TLS/RTP/SAVPF 120      // Why is the port 0?
c=IN IP4 0.0.0.0
a=inactive                           // This seems incorrect
a=mid:video0
a=rtpmap:120 VP8/90000               // This should be H264


For comparison, here is an answer SDP from Chrome which streams successfully:


v=0
o=- 4481503930448229400 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE video0
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 96       // Port 9 used here
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:U/NT
a=ice-pwd:KVGFr/KEWwTJfam3FXRuKn98   // There are more ICE values here
a=ice-options:trickle
a=fingerprint:sha-256 98:D9:7D:22:7C:BB:00:58:73:20:F1:91:C1:F4:1E:D8:AE:1F:FE:60:57:5C:27:68:EF:17:BB:C6:93:65:76:73
a=setup:active
a=mid:video0
a=recvonly                           // recvonly instead of sendrecv
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 H264/90000               // Using H264
a=rtcp-fb:96 nack pli
a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0015

我最初嘗試使用 Firefox SDP 答案來手動將 H264 添加到 Firefox 中的本地答案中,但這並不完全有效,因為還有許多其他必需的 ICE 值我可能無法偽造。 在這一點上,我想知道設備的報價是否需要任何更新的值,這些值將專門用於 Firefox,但我不確定這些值是什么。 可能是 a=mid:video0,因為它有尾隨 0,但為什么 Chrome 會工作並返回相同的值? 可能是 profile-level-id,雖然我不確定這有多大影響。

任何人都知道這里可能會發生什么問題以及可能需要哪些修復?

Firefox 可能不支持配置文件級別 id 0x4d4016。 然后您沒有共同的編解碼器並且媒體被拒絕(這就是端口 0 的含義)。 如果沒有任何未拒絕的 m 線,您的連接將失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM