webrt c с firebase: как исправить черный экран на ios / safari - PullRequest
4 голосов
/ 14 февраля 2020

Я работаю над видеосвязью в своем веб-приложении. Я попытался [https://github.com/webrtc/FirebaseRTC/tree/solution] [1] пример, который на https://webrtc.org/getting-started/firebase-rtc-codelab здесь.

Это работает в следующих браузерах:

  • рабочий стол / chrome -----> рабочий стол / chrome
  • рабочий стол / chrome -----> рабочий стол / firefox
  • рабочий стол / firefox -----> рабочий стол / firefox

но не Safari, я вижу только черный экран. Это не работает.

  • рабочий стол / chrome ----> ios / safari
  • ios / safari ----> ios / safari

на самом деле я вижу черный экран, но я думаю, что safari получает mediastream, но не может показать.

У меня есть этот код в codelab:

 peerConnection.addEventListener('track', event => {//other pc track
      console.log('Got remote track:', event.streams[0]);
       event.streams[0].getTracks().forEach(track => {
        console.log('Add a track to the remoteStream:', track);
        remoteStream.addTrack(track);
      });
    });

Как я могу исправить эту проблему?

1 Ответ

3 голосов
/ 15 февраля 2020

Я решил проблему, это работает на сафари. Теперь я могу получить videStream. Я изменил этот код в codelab

 peerConnection.addEventListener('track', event => {//other pc track
      console.log('Got remote track:', event.streams[0]);
       event.streams[0].getTracks().forEach(track => {
        console.log('Add a track to the remoteStream:', track);
        remoteStream.addTrack(track);
      });
    });

на

peerConnection.addEventListener('track', event => {//other pc track
      console.log('Got remote track:', event.streams[0]);

        document.querySelector('#remoteVideo').srcObject = event.streams[0];
        console.log(event.streams[0]);
        remoteStream = event.streams[0];


    });

Я думаю, что сафари не поддерживает remoteStream.addTrack (track ); ( remoteStream такое MediaStream obj ) Я искал об этой проблеме, ничего не могу найти.

...