为什么当音频和视频的MediaStreamTracks启用参数都设置为false时,为什么“广播"?指示灯一直亮着? [英] Why when both audio and video MediaStreamTracks enabled parameter set to false, "on-air" indicator keeps being turned on?

查看:185
本文介绍了为什么当音频和视频的MediaStreamTracks启用参数都设置为false时,为什么“广播"?指示灯一直亮着?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

W3C http://www.w3.关于媒体流生命周期的org/TR/mediacapture-streams/#life-cycle-and-media-flow 文章说:

所有与音源相连的音轨都被静音或禁用时,该音源的播音"或录音"指示灯可以关闭;当曲目不再静音或被禁用时,必须将其重新打开.

When all tracks connected to a source are muted or disabled, the "on-air" or "recording" indicator for that source can be turned off; when the track is no longer muted or disabled, it must be turned back on.

是否提到了在Chrome中实现的行为?

Is mentioned behaviour implemented in Chrome or not?

推荐答案

更新::Firefox现在支持

Update: Firefox now supports turning off the camera light on mute. Edits in bold.

我从这个主题中得知,你知道答案是否定的.

I gather from the subject that you know the answer is no.

在站点(临时)禁用摄像机流时,Chrome和Firefox均不会关闭摄像机灯.规范说可以"关闭它,但必须"使其重新打开,因此两种浏览器都符合要求.

Neither Chrome nor Firefox turn off the camera light while a site (temporarily) disables a camera stream. The spec says "can" for turning it off, but "MUST" for turning it back on, so both browsers are in compliance.

您可以在这里尝试:

var start = () => navigator.mediaDevices.getUserMedia({ video: true })
  .then(stream => video.srcObject = stream)
  .catch(e => log(e.name));

toggle.onclick = () => {
  var track = video.srcObject && video.srcObject.getVideoTracks()[0];
  if (!track) return;
  toggle.innerHTML = (track.enabled = !track.enabled) ? "Disable" : "Enable";
}

var log = msg => div.innerHTML += "<p>" + msg + "</p>";

<video id="video" height="120" width="160" autoplay></video><br>
<button onclick="start()">Start!</button>
<button id="toggle">Disable</button><div id="div"></div>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>

注意:在Chrome中,使用 https://jsfiddle.net/jib1/b6tyjm4s/代替(getUserMedia +代码段!= <3).

Note: In Chrome use https://jsfiddle.net/jib1/b6tyjm4s/ instead (getUserMedia + snippets != <3).

关于原因,规范还说:

当未存储权限时,权限应仅持续到该设备来源的所有MediaStreamTracks被停止之前.

When permission is not stored, permission should last only until such time as all MediaStreamTracks sourced from that device have been stopped.

这可以从摄像头灯 以及浏览器内摄像头&麦克风实时指示器 .对于非永久权限,这两种浏览器均可以确保用户在摄像头指示灯熄灭时终止对网站的访问.在站点临时禁用流媒体时关闭电灯会破坏此保证.浏览器内指示器可能会支持此问题.

This is observable from the camera light as well as in-browser camera & microphone live indicators. For non-persistent permissions, both browsers guarantee users that a site's access ends when the camera light goes off. Turning off the light while a site temporarily disables a stream would break this guarantee. In-browser indicators may buttress this problem.

在Chrome中,我不得不推测何时使用 https ,但是至少对于Firefox(默认情况下,权限授予是非持久性的)而言,这就是原因.

I'd have to speculate when it comes to https in Chrome, but at least for Firefox, where permission grants are non-persistent by default, this is why.

这篇关于为什么当音频和视频的MediaStreamTracks启用参数都设置为false时,为什么“广播"?指示灯一直亮着?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆