video - 类型错误 : 'getUserMedia' called on an object that does not implement interface MediaDevices

标签 video webcam getusermedia

我正在尝试使用视频标签在网站中实现网络摄像头。 它在 Chrome 中工作,但 FireFox 和 IE 在控制台中返回错误。 任何人有任何想法为什么? 谢谢!

代码:

navigator.getMedia =    navigator.getUserMedia ||
                                navigator.webkitGetUserMedia ||
                                navigator.mediaDevices.getUserMedia ||
                                navigator.msGetUserMedia ||
                                OTPlugin.getUserMedia;

Firefox 错误:TypeError:'getUserMedia' 调用了一个未实现接口(interface) MediaDevices 的对象。

IE 错误:无法获取未定义或空引用的属性“getUserMedia”

最佳答案

您忘记了 Firefox 的 navigator.mozGetUserMedia。 IE 没有它(尽管 MS Edge 有)。

此外,从该列表中删除 navigator.mediaDevices.getUserMedia,因为它的工作方式不同。

我的建议: 跳过前缀困惑并尝试 adapter.js ,官方 WebRTC polyfill。然后使用 navigator.mediaDevices.getUserMedia排他性的,因为其他一切都已被弃用。

示例(在 Chrome 中使用 https fiddle):

navigator.mediaDevices.getUserMedia({ video: true, audio: true })
  .then(stream => video.srcObject = stream)
  .catch(e => console.log(e.name + ": "+ e.message));
<video id="video" width="160" height="120" autoplay></video><br>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>

关于video - 类型错误 : 'getUserMedia' called on an object that does not implement interface MediaDevices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673000/

相关文章:

android - ExoPlayer 在旋转屏幕上的相同位置恢复

c - 使用 C 中的极坐标方法向帧添加噪声

python - 如何使用 gdata.youtube api 直接方法插入大于 1MB 的视频

windows - 在一台计算机上运行多个网络摄像头

javascript - Safari 12 忽略 getUserMedia 约束

datetime - FFMpeg - 在像监控一样的录制过程中打印日期和时间

python - 如何在 python 中获取计算机上存在的网络摄像头的名称?

javascript - jQuery 网络摄像头/闪光灯 : How to detect if webcam is active?

javascript - 无法通过 https 读取未定义的属性 'getusermedia'

javascript - iOS 11.3 通过 getUserMedia 和黑屏访问相机