关于媒体流生命周期的W3C http://www.w3.org/TR/mediacapture-streams/#life-cycle-and-media-flow文章说:
当连接到音源的所有音轨静音或禁用时,可以关闭该音源的“播出”或“录音”指示灯;当曲目不再静音或禁用时,必须将其重新打开。
是否在Chrome中实现了提及的行为?
答案 0 :(得分:1)
我从主题中收集到你知道答案是否定的。
当网站(暂时)禁用相机流时,Chrome和Firefox都不会关闭相机指示灯。规范说" can"把它关掉,但是"必须"为了重新打开它,所以两个浏览器都符合要求。
你可以在这里试试:
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>";
&#13;
<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>
&#13;
注意:在Chrome中使用https://jsfiddle.net/jib1/b6tyjm4s/代替(getUserMedia + snippets!=&lt; 3)。
至于为什么,spec also says:
如果未存储权限,则权限应仅持续到从该设备获取的所有MediaStreamTracks都已停止为止。
这可以通过相机灯观察到。对于非持久性权限,两个浏览器都保证用户在相机指示灯熄灭时终止访问。 当网站暂时禁用流时关闭灯会破坏此保证。
我必须推测Chrome中的https
,但至少对于Firefox,默认情况下权限授予是非持久性的,这就是原因。