Ошибка WebRTC в прямом эфире (H264) в Firefox, не удается сгенерировать правильный ответ SDP
Я пытаюсь бежать H264
закодированный прямой эфир в веб-браузере с использованием Janus WebRTC Gateway. Во время тестирования с Chrome
, поток работает нормально, но с firefox
это показывает ICE failed, add a TURN server and see about:webrtc for more details
,
Следующее мое about:webrtc
журналы для Firefox.
[ 6442450983 ] http://192.168.2.194:5000/ 15:18:19 GMT+0530 (IST)
PeerConnection ID: 1515491295667117 (id=6442450983 url=http://192.168.2.194:5000/)
ICE Stats
Local Candidate Remote Candidate ICE State Priority Nominated Selected Bytes sent Bytes received
ICE restarts:
ICE rollbacks:
SDP
Local SDP
v=0
o=mozilla...THIS_IS_SDPARTA-57.0.4 3500649212029345392 0 IN IP4 0.0.0.0
s=-
t=0 0
a=sendrecv
a=fingerprint:sha-256 11:44:F1:BD:D1:69:8E:17:E0:9A:AA:89:8E:76:9F:4E:09:E1:94:D0:37:34:EE:FE:DF:5E:FC:77:B0:4D:F7:53
a=ice-options:trickle
a=msid-semantic:WMS *
m=video 0 RTP/SAVPF 120
c=IN IP4 0.0.0.0
a=inactive
a=end-of-candidates
a=mid:video
a=rtpmap:120 VP8/90000
Remote SDP
v=0
o=- 1515491295396595 1515491295396595 IN IP4 106.51.68.195
s=-
t=0 0
a=sendrecv
a=group:BUNDLE video
a=msid-semantic:WMS janus
m=video 9 RTP/SAVPF 126
c=IN IP4 106.51.68.195
a=candidate:1 1 udp 2013266431 192.168.2.194 45887 typ host
a=candidate:2 1 udp 1677722111 106.51.68.195 45887 typ srflx raddr 192.168.2.194 rport 45887
a=sendonly
a=end-of-candidates
a=fingerprint:sha-256 D2:B9:31:8F:DF:24:D8:0E:ED:D2:EF:25:9E:AF:6F:B8:34:AE:53:9C:E6:F3:8F:F2:64:15:FA:E8:7F:53:2D:38
a=ice-options:trickle
a=ice-pwd:KsS99rsAZXj9lFd7psCT61
a=ice-ufrag:3tcw
a=mid:video
a=rtcp-fb:126 nack
a=rtcp-fb:126 goog-remb
a=rtcp-mux
a=rtpmap:126 H264/90000
a=setup:actpass
a=ssrc:3973486276 cname:janusvideo
a=ssrc:3973486276 msid:janus janusv0
a=ssrc:3973486276 mslabel:janus
a=ssrc:3973486276 label:janusv0
RTP Stats
Я даже попытался добавить следующий сервер TURN
{urls: "turn:numb.viagenie.ca",
username: "l1787875@mvrht.com",
credential: "test"}
Но ошибка консоли меняется на ICE failed, your TURN server appears to be broken, see about:webrtc for more details
Сохраняя about:webrtc
логи такие же как и раньше.
Я понял, что каким-то образом Firefox не может сгенерировать правильный ответ на предложение SDP, сгенерированное Janus. Созданный ответ Firefox имеет атрибут rtpmap: 120 VP8/90000
тогда как предложение SDP, сделанное Janus, имеет атрибут rtpmap: 127 H264/90000
, которые мешают Firefox установить сеанс SDP с Янусом. Chrome может генерировать правильный ответ с rtpmap: 127 H264/90000
так что он может отображать поток отлично.
я использую Mozilla firefox-57.0.4
, Есть ли способ, я могу получить / сгенерировать действительный SDP answer
для входящих SDP offer
от Януса?
1 ответ
Это решение сработало для меня (последнее желтое сообщение): https://groups.google.com/forum/
Я использую Janus, и я получаю ту же ошибку в Firefox. Проблема была в идентификаторе уровня профиля SDP. Я просто должен был заменить это:
// Create offer/answer now if(jsep === null || jsep === undefined) { createOffer(handleId, media, callbacks); } else { if(adapter.browserDetails.browser === "edge") { // This is Edge, add an a=end-of-candidates at the end jsep.sdp += "a=end-of-candidates\r\n"; } var oldsdp = jsep["sdp"]; var pattern=/420029/gi; var newsdp = oldsdp.replace(pattern,"42e01f"); Janus.log(newsdp); jsep["sdp"]=newsdp; config.pc.setRemoteDescription( new RTCSessionDescription(jsep), function() { Janus.log("Remote description accepted!"); createAnswer(handleId, media, callbacks); }, callbacks.error); } }