6

我有一个由远程获取的远程 对象。MediaStreamWebRTC 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);
}

但是行为是一样的。

我不明白为什么没有触发这两个事件。

我正在使用谷歌浏览器 52.0.2743.116 m

4

1 回答 1

1

不,它工作正常,只是您不能直接为该事件编写函数(根据现在已删除的文档)。您还可以event.stream在控制台中记录您的对象并查看详细信息。您必须使用预定义的属性onactiveoninactive

我编写了一个快速代码来测试如何触发这些事件。

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);
})
于 2017-08-28T15:47:11.037 回答