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