RTCPeerConnection не является конструктором в Firefox и Safari - PullRequest
0 голосов
/ 31 мая 2018

Я программирую очень простое приложение WebRTC для потоковой передачи видео в реальном времени с камеры RaspberryPi Zero.Я использую драйвер Linux Project UV4L для настройки сервера и JavaScript для подключения и воспроизведения видеопотока.Мой код JavaScript основан на демонстрационной версии UV4L , в которой для согласования используются методы веб-сокетов RTC.

Их код прекрасно работает в 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) возникает следующая ошибка:

Ошибка типа: RTCPeerConnection не является конструктором

Согласно Документам MDN , Firefox поддерживает этот конструктор начиная с v22.В чем может быть проблема?

1 Ответ

0 голосов
/ 05 июня 2018

Моя ошибка оказалась глупой опечаткой.Объявление RTCPeerConnection в начале кода было неверным.Должно быть:

RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection;
...