Прекращение обмена видео потоком webrtc

Я создал видеочат на основе webrtc, предъявив иск peerjs.

Локальный и удаленный элемент видео создается с помощью элемента управления:

local: 'video id = [local_peer_id] autoplay = "true" controls = "true">'

remote: and 'video id = [remote_peer_id] autoplay = "true" controls = "true">'

Теперь во время видеочата, если локальный пользователь отключен, удаленный пользователь auido не может ничего слышать, и его работа безупречна.

Проблема с видео. Если локальный пользователь приостанавливает собственное видео, он может видеть, что видео приостановлено, но удаленный пользователь все еще может видеть его видео в прямом эфире.

с другой стороны, если удаленный пользователь приостанавливает свое видео, локальный пользователь все еще может видеть его видео в прямом эфире.

Кто-нибудь скажет, что нужно сделать, чтобы развернуть функцию

"Пауза" и "возобновление" видео, которое работает в режиме реального времени для обоих пиров?

3 ответа

Вам нужно знать разницу между тегами HTML и потоками WebRTC...

Вы можете запускать потоки без привязки их к какому-либо тегу HTML, а мультимедиа может отправляться и приниматься каждым узлом. Таким образом, каждый узел может прикрепить поток к тегу аудио / видео, и тег будет действовать только как проигрыватель, который вы используете для воспроизведения потока, который уже запущен.

Таким образом, если вы отключите тэг HTML, вы будете заглушать только проигрыватель, а не поток. Если вы хотите, чтобы что-то влияло на другого пира, вам нужно что-то делать в потоке или в соединении пира.

В частности, чтобы отключить звук и возобновить воспроизведение аудио или видео, необходимо переключить дорожки мультимедиа в потоке мультимедиа.

    // create a button to toggle video 
    var button = document.createElement("button");
    button.appendChild(document.createTextNode("Toggle Hold"));

    button.onclick = function(){
        mediaStream.getVideoTracks()[0].enabled =
         !(mediaStream.getVideoTracks()[0].enabled);
    }

Чтобы приостановить / возобновить звук, используйте вместо этого getAudioTracks().

Призвание mediaStream.stop() остановит камеру
где mediaStream это поток, который вы получили при звонке getUserMedia

Вот рабочий пример

mediaStream.getAudioTracks () [0].stop ();
mediaStream.getVideoTracks () [0].stop ();

Надеюсь, что это будет работать с новыми стандартами. Это нормально работает в моем приложении.

Другие вопросы по тегам