function hasUserMedia() { navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; return !!navigator.getUserMedia; } if (hasUserMedia()) { navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; //get both video and audio streams from user"s camera navigator.getUserMedia({ video: true, audio: true }, function (stream) { var video = document.querySelector("video"); //insert stream into the video tag video.src = window.URL.createObjectURL(stream); }, function (err) {}); }else { alert("Error. WebRTC is not supported!"); } 报错 Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution faile
时间: 2024-03-03 09:46:58 浏览: 179
get-user-media-promise:navigator.mediaDevices.getUserMedia的基本包装,具有自动回退到navigator.getUserMedia的功能
这个错误通常是因为 `window.URL.createObjectURL()` 方法被浏览器废弃了,无法正常使用。在最新版本的浏览器中,推荐使用 `MediaDevices.getUserMedia()` 方法来获取用户的媒体流,并将媒体流直接赋值给 `<video>` 标签的 `srcObject` 属性。
可以将代码修改为如下形式,以确保在最新版本的浏览器中可以正常运行:
```
function hasUserMedia() {
return !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia);
}
if (hasUserMedia()) {
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then(function(stream) {
var video = document.querySelector("video");
video.srcObject = stream;
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
} else {
alert("Error. WebRTC is not supported!");
}
```
该代码使用 `MediaDevices.getUserMedia()` 方法获取媒体流,并将媒体流直接赋值给 `<video>` 标签的 `srcObject` 属性。如果浏览器不支持 `getUserMedia()` 方法,则会弹出错误提示。
阅读全文