Firefox 中的 WebRTC 直播流 (H264) 错误,无法生成有效的 SDP 答案
WebRTC live stream(H264) error in Firefox, can't generate valid SDP answer
我正在尝试使用 Janus WebRTC 网关在 Web 浏览器中 运行 H264
编码实时流。在使用 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 无法以某种方式为 Janus 生成的 SDP 提供生成有效答案。 Firefox 创建的答案具有属性 rtpmap: 120 VP8/90000
,而 Janus 提供的 SDP 提供具有属性 rtpmap: 127 H264/90000
,这会阻止 Firefox 与 Janus 建立 SDP 会话。 Chrome 可以用 rtpmap: 127 H264/90000
生成有效答案,因此它可以完美显示流。
我正在使用 Mozilla firefox-57.0.4
。
有没有办法,我可以为来自 Janus 的传入 SDP offer
获取/生成有效的 SDP answer
?
这个解决方案对我有用(最后一条黄色消息):
https://groups.google.com/forum/#!topic/meetecho-janus/jKg5u9421kM
我正在使用 Janus,但在 Firefox 中遇到了同样的错误。
问题出在 SDP profile-level-id 上。
我只需要更换它:
// 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);
}
}
我正在尝试使用 Janus WebRTC 网关在 Web 浏览器中 运行 H264
编码实时流。在使用 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 无法以某种方式为 Janus 生成的 SDP 提供生成有效答案。 Firefox 创建的答案具有属性 rtpmap: 120 VP8/90000
,而 Janus 提供的 SDP 提供具有属性 rtpmap: 127 H264/90000
,这会阻止 Firefox 与 Janus 建立 SDP 会话。 Chrome 可以用 rtpmap: 127 H264/90000
生成有效答案,因此它可以完美显示流。
我正在使用 Mozilla firefox-57.0.4
。
有没有办法,我可以为来自 Janus 的传入 SDP offer
获取/生成有效的 SDP answer
?
这个解决方案对我有用(最后一条黄色消息): https://groups.google.com/forum/#!topic/meetecho-janus/jKg5u9421kM
我正在使用 Janus,但在 Firefox 中遇到了同样的错误。 问题出在 SDP profile-level-id 上。 我只需要更换它:
// 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); } }