如何修改mediaStreamTrack.enabled时收到通知/事件?

时间:2015-05-30 13:58:55

标签: javascript webrtc mediastreamsource

我正在使用getUserMedia来访问网络摄像头。我有一个功能可以打开和关闭视频,执行以下操作:

  var videoTracks = this.stream.getVideoTracks();
  if (videoTracks.length === 0) {
    trace('No local video available.');
    return;
  }

  trace('Toggling video mute state.');
  for (var i = 0; i < videoTracks.length; ++i) {
    videoTracks[i].enabled = !videoTracks[i].enabled;
  }

  trace('Video ' + (videoTracks[0].enabled ? 'unmuted.' : 'muted.'));

如果enabled的值发生变化,如何收到活动?我尝试使用Object.observe,但它不起作用。

1 个答案:

答案 0 :(得分:1)

据我所知,当enabled属性发生变化时,当前没有调用事件触发/回调。

来自here

  

此外,WebRTC本机实现中没有定义或触发“onmuted”和“onunmuted”事件。

您可能必须自己构建此机制:

  

请记住,您正在本地停用媒体曲目;它不会在目标用户端发射任何事件。如果您禁用了视频轨道;然后它会在目标用户端造成“空白视频”。

     

您可以使用用于信令的套接字手动触发“onmuted”或“onmediatrackdisabled”等事件。您可以发送/发出以下消息:

yourSignalingSocket.send({
    isMediaStreamTrackDisabled: true,
    mediaStreamLabel: stream.label
});

根据spec,它最终应成为MediaStreamTrack界面的一部分:

  

onHute类型为EventHandler,

     

实现MediaStreamTrack接口的所有对象必须支持此类型为mute的事件处理程序。

我尝试将功能分配给Chrome中的曲目onmute(43),但它从未被调用(looks like this is not implemented yet)。