在 Firefox 上使用 HTTPS 时强制 getUserMedia 重新提示
Force getUserMedia re-prompt when using HTTPS on Firefox
我正在制作一个带有两个网络摄像头的简单应用程序,它只需要在最新的 Firefox 上运行。在本地它工作正常:
- 提示用户访问相机
- 用户select一台相机
- 再次提示用户
- 用户select第二个摄像头
- 两个流都工作正常
但是,当我将它上传到通过 HTTPS 提供页面的服务器时,第一个摄像头的访问被记住,我只得到两个相同的流。
有没有办法在 HTTPS 上强制重新提示,以便用户也可以 select 其他摄像头?
这是我的代码:
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()
列出可用的摄像头 and/or 个麦克风。
您可以在此处阅读更多详细信息:https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices
我正在制作一个带有两个网络摄像头的简单应用程序,它只需要在最新的 Firefox 上运行。在本地它工作正常:
- 提示用户访问相机
- 用户select一台相机
- 再次提示用户
- 用户select第二个摄像头
- 两个流都工作正常
但是,当我将它上传到通过 HTTPS 提供页面的服务器时,第一个摄像头的访问被记住,我只得到两个相同的流。
有没有办法在 HTTPS 上强制重新提示,以便用户也可以 select 其他摄像头?
这是我的代码:
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()
列出可用的摄像头 and/or 个麦克风。
您可以在此处阅读更多详细信息:https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices