我正在使用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
,但它不工作。
据我所知,当enabled
属性改变时,目前没有事件触发/回调调用。
:
也没有"onmuted"one_answers";onunmuted"事件定义或触发在WebRTC原生实现。
你可能需要自己构建这个机制:
请记住,您正在禁用本地媒体跟踪;它不会在目标用户端触发任何事件。如果你禁用了视频轨迹;然后就会导致视频空白在目标用户端。
您可以手动触发事件,如"onmuted"或";onmediatrackdisabled"通过使用用于信令的套接字。您可以发送/发出这样的消息:
yourSignalingSocket.send({
isMediaStreamTrackDisabled: true,
mediaStreamLabel: stream.label
});
根据规范,这应该最终成为MediaStreamTrack接口的一部分:
onmute类型为EventHandler,
此事件处理程序类型为mute,必须为所有实现MediaStreamTrack接口的对象所支持。
我尝试在Chrome(43)中分配一个函数到轨道的onmute
,但它从未被调用(看起来这还没有实现)。