因此,桌面版和移动版 Safari 上都有此选项,您可以在其中“暂停”摄像头和麦克风。
它与其他浏览器不同,您只需撤销之前授予的访问权限,因为它不会更改或触发媒体流上的任何内容。它用黑屏取代了摄像头画面,然后关闭了设备上的摄像头。
所以
track.onended
不会触发,MediaStreamTrack.readyState
保持"live"
,stream.active
返回true
等
如果客户端在初始设置后尝试通过暂停摄像头源来绕过活动摄像头的要求,我需要这个来触发警告或结束 webRTC 视频通话。
所以我的问题:有没有一种优雅的方法来检测“Safari 暂停”,或者我唯一的选择是通过图像处理进行一些猜测来检测“黑屏”?如果是后者,我不介意参考一些有关如何实现这一目标的资源。
编辑:我想在 webRTC 调用开始之前捕获禁用的摄像头客户端,因此使用比特率来确定摄像头是否处于活动状态将是我的最后手段。
您可以使用
muted
上的 MediaStreamTrack
属性来检查它是否在 Safari 中“暂停”。
const tracks = mediaStream.getTracks();
for (const track of tracks) {
console.log(track.muted);
}
每当
mute
属性更改时,还会调度 unmute
和 muted
事件。