我编写了一个非常简单的WebRTC应用程序,用于从RaspberryPi Zero相机中流式传输实时视频。我使用Linux Project's UV4L driver设置服务器和JavaScript来连接和播放视频流。我的JavaScript代码基于UV4L's demo,它基本上使用RTC Web套接字方法来执行协商。
他们的代码在Chrome中运行得非常好,但似乎无法在Firefox或Safari下运行。
RTCPeerConnection = window.webkitRTCPeerConnection;
RTCSessionDescription = window.RTCSessionDescription;
RTCIceCandidate = window.RTCIceCandidate;
var ws;
function signal(url, onStream, onError, onClose, onMessage) {
if("WebSocket" in window) {
var pc;
ws = new WebSocket(url);
ws.onopen = function () {
var config = {"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]};
pc = new RTCPeerConnection(config); // <---- ERROR here.
pc.onicecandidate = function (event) {
// ... ICE negotiation.
};
if('ontrack' in pc) {
pc.ontrack = function(event) {
// ... set stream object and play
};
} else { // onaddstream() is deprecated
pc.onaddstream = function (event) {
// ... set stream object and play
};
}
// ... other event listeners.
ws.send(...); // Signals the remote peer to initiate a call
};
}
}
特别是,我收到错误当我尝试连接时,Firefox v60.0.1中引发了以下错误(在Safari中非常类似):
TypeError:RTCPeerConnection不是构造函数
根据MDN docs,Firefox从v22开始就支持这个构造函数。可能是什么问题?
答案 0 :(得分:1)
我的错误结果是一个愚蠢的错字。在代码开头声明RTCPeerConnection是错误的。它应该是:
RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection;