在远程WebRTC对等连接中不会触发MediaStream事件处于活动状态和非活动状态

时间:2016-08-24 10:23:59

标签: html5 html5-video webrtc mediastream

我有一个远程MediaStream获得的远程 WebRTC Peer Connection对象。

我想检查远程 MediaStream 何时变为无效(由于原因而无关)。

我已经读过,为此我应该使用active对象的事件inactiveMediaStream

但是这两个事件永远不会被触发:即使我为这两个事件设置了一个特定的处理程序,处理程序也永远不会被执行。

这是我的实施:

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 m

1 个答案:

答案 0 :(得分: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);
})