如何解决如何在Mediastream JavaScript上完全关闭相机
正在尝试创建视频会议网络应用。
问题是我试图在会议中禁用我的相机,但它的工作正常,但是我的笔记本电脑相机指示灯仍然亮着(指示灯亮着),但是在我的网络上,视频显示黑屏,这是正常现象还是我错过了什么?
我在这里尝试
videoAction() {
navigator.mediaDevices.getUserMedia({
video: true,audio: true
}).then(stream => {
this.myStream = stream
})
this.myStream.getVideoTracks()[0].enabled = !(this.myStream.getVideoTracks()[0].enabled)
this.mediaStatus.video = this.myStream.getVideoTracks()[0].enabled
}
解决方法
还有一个stop()
方法应该可以在Chrome和Safari中完成。 Firefox应该已经通过设置enabled
属性将相机标记为未使用。
this.myStream.getVideoTracks()[0].stop();
,
首先,MediaStreamTrack.enabled是布尔值,因此您只需分配值false
。
为了简化代码,您可以调用:
var vidTrack = myStream.getVideoTracks();
vidTrack.forEach(track => track.enabled = false);
在MediaStreamTrack.enabled = false
时,曲目将空帧传递到流,这就是发送黑色视频的原因。摄像头/源本身并未停止-我相信网络摄像头指示灯会在Mac设备上熄灭,但在Windows等设备上可能不会熄灭。
.stop()
会完全停止跟踪,并告诉源头不再需要它。如果源仅连接到此轨道,则源本身将完全停止。调用.stop()
肯定会关闭摄像头和网络摄像头的光,但是您将无法在流实例中将其重新打开(因为其视频轨道已销毁)。因此,完全不希望关闭相机电源。只需坚持.enabled = false
暂时禁用视频,然后坚持.enabled = true
将其重新打开。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。