javascript - 在 Firefox 上使用 HTTPS 时强制 getUserMedia 重新提示
问题描述
我正在制作一个带有两个网络摄像头的简单应用程序,它只需要在最新的 Firefox 上运行。在本地它工作正常:
- 提示用户访问相机
- 用户选择一台相机
- 再次提示用户
- 用户选择第二个摄像头
- 两个流都工作正常
但是,当我将其上传到通过 HTTPS 为页面提供服务的服务器时,会记住来自第一个摄像头的访问,并且我只会获得两个相同的流。
有没有办法在 HTTPS 上强制重新提示,以便用户也可以选择另一个摄像头?
这是我的代码:
function handleSuccess1(stream) {
video1.srcObject = stream;
navigator.mediaDevices.getUserMedia(constraints).
then(handleSuccess2).catch(handleError);
}
function handleSuccess2(stream) {
// this gets called automatically with the first stream
// without re-prompting the user
video2.srcObject = stream;
}
const constraints = {
video: true
};
function handleError(error) {
console.error(error);
}
navigator.mediaDevices.getUserMedia(constraints).
then(handleSuccess1).catch(handleError);
解决方案
用于navigator.mediaDevices.enumerateDevices()
列出可用的摄像头和/或麦克风。
您可以在此处详细了解它:https ://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
推荐阅读
- javascript - 如何在本机反应中正确实现单选按钮部分?
- javascript - 在 React 中使用 API 信息映射元素
- python - Python层图像失败:“无法导入模块'lambda_function':无法从'PIL'导入名称'_imaging'”
- r - 具有 URL 超链接的 renderDataTable 在 URL 之前包含服务器地址
- sql - 按年/月统计和分组数据
- r - 如何用奇怪的规则获得总分
- powershell - 如何将 cmdlet Connect-PnPOnline 与选项、ClientId、ClientSecret 和 AADDomain 选项一起使用?
- leaflet - 如何防止 Leaflet 连接来自多个基础层的属性?
- r - 为每天的平均值添加线(ggplot)
- python - 如何从字典的开头删除'?