События 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 м
1 ответ
Нет, он работает правильно, просто вы не можете напрямую написать функцию для этого события (согласно документации, которая сейчас удалена). Вы также можете войти в свой event.stream
Объект в консоли и увидеть детали. Вы должны вызвать предопределенную функцию и передать столько аргументов, сколько захотите.
Я сделал быстрый код, чтобы проверить, как вызвать эти события.
HTML
<video src="" autoplay id="video"></video>
JavaScript
var video = document.getElementById('video')
function myfun() {
console.log("on active event");
}
navigator.getUserMedia({video:true, audio:false}, function (stream) {
stream.onactive = myfun();
video.src = window.URL.createObjectURL(stream);
}, function (error) {
console.log(error);
})