我遇到了一个奇怪的问题,Chrome 浏览器无法访问任何 WebRTC 应用中的视频输入。例如,meet.jit.si 警告说
无法访问您的相机
由于未知原因无法使用相机
并且设置中的源选择Permission not granted
不是相机下拉菜单(但实际上我确实允许使用相机和麦克风)。
我应该如何调试该问题以了解发生了什么并修复它?
我已经发现了什么:
- 该问题在多个 Chrome 版本(74 和 80)上仍然存在
- Chrome 80 便携式安装中仍然存在此问题
- Chrome 的姊妹浏览器(如 Vivaldi)也存在此问题
- 相同的 WebRTC 应用程序在其他计算机上的 Chrome 上运行良好。
- Firefox 上的视频输入功能良好
- 音频输入和输出无任何问题
- 如果我进入
navigator.mediaDevices.getUserMedia({audio: true, video: true}).then(console.log)
控制台,它会提示访问摄像头和麦克风,但永远不会解决承诺。 - 如果我进入
navigator.mediaDevices.enumerateDevices().then(console.log)
控制台,它会返回所有设备的列表。label
如果我之前允许该域上的设备访问,则设备名称(字段)可见,否则为空。
原因可能在于计算机的设置(该机器具有多个虚拟和物理视频输入)。我们需要解决这个问题,因为我们需要视频输入和通过 Chrome 的 WebRTC 同时工作。