Активные и неактивные события MediaStream не запускаются при удаленном одноранговом соединении WebRTC.

У меня есть удаленный MediaStream объект, полученный удаленным WebRTC Peer Connection.

Я хочу проверить, когда пульт MediaStream становится неактивным (независимо от причины).

Я читал, что для этой цели мне следует использовать события active и inactive объекта MediaStream.

Но эти два события никогда не запускаются: даже если я установил определенный обработчик для этих двух событий, обработчики никогда не выполняются.

Вот моя реализация:

function onRemoteStream(event) {
    event.stream.addEventListener("active", function(){
    console.log('The video is active');
    }, false);
    event.stream.addEventListener("inactive", function(){
        console.log('The video is not active');
    }, false);
    remoteVideo.src = window.URL.createObjectURL(event.stream);
}

Два сообщения никогда не отображаются.

Я также пробовал:

function onRemoteStream(event) {
    event.stream.onactive = function(){
        console.log('The video is active');
    };
    event.stream.oninactive = function(){
        console.log('The video is not active');
    }
    remoteVideo.src = window.URL.createObjectURL(event.stream);
}

Но поведение такое же.

Я не понимаю, почему не запускаются два события.

Я использую Google Chrome 52.0.2743.116 м


person Alessandro C    schedule 24.08.2016    source источник


Ответы (1)


Нет, он работает правильно, просто вы не можете напрямую написать функцию для этого события (согласно документации, которая теперь удалена). Вы также можете зарегистрировать свой объект event.stream в консоли и просмотреть подробности. Вы должны использовать предопределенные свойства onactive и oninactive

Я сделал быстрый код, чтобы проверить, как запускать эти события.

HTML

<video src="" autoplay id="video"></video>

JavaScript

var video = document.getElementById('video')

function onactive() {
  console.log("on active event");
}

function oninactive() {
  console.log("on inactive event");
}

navigator.getUserMedia({video:true, audio:false}, function (stream) {
  stream.onactive = onactive;
  stream.oninactive = oninactive;

  video.src = window.URL.createObjectURL(stream);
}, function (error) {
  console.log(error);
})
person Apal Shah    schedule 28.08.2017