【问题标题】:How can I receive a notification/event when mediaStreamTrack.enabled is modified?修改 mediaStreamTrack.enabled 时如何接收通知/事件?
【发布时间】:2015-05-30 13:58:55
【问题描述】:

我正在使用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,但它不起作用。

【问题讨论】:

    标签: javascript webrtc mediastreamsource


    【解决方案1】:

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

    来自here

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

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

    请记住,您正在本地禁用媒体轨道;它不会在目标用户端触发任何事件。如果您禁用了视频轨道;那么它会导致目标用户端出现“空白视频”。

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

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

    根据spec,这最终应该是 MediaStreamTrack 接口的一部分:

    EventHandler 类型的 onmute,

    所有实现 MediaStreamTrack 接口的对象都必须支持这个静音类型的事件处理程序。

    我尝试在 Chrome (43) 中为轨道的 onmute 分配一个函数,但它从未被调用 (looks like this is not implemented yet)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多