Safari getUserMedia() 未处理的承诺拒绝

Ali*_*may 2 javascript safari cross-browser webrtc getusermedia

按照互联网上的建议,我将mutedplaysinline属性添加到我的视频元素中。我仍然无法在 Safari 11 中获得愿景,但只有这个错误。我还尝试autoplay从我的视频元素中删除。

Unhandled Promise Rejection: TypeError: Type error

是否可以webrtc在 Safari 11 中工作,或者我是否在浪费时间?

getUserMedia() 适用于所有其他浏览器(Chrome、Firefox、Edge、Opera)。

谢谢!

我使用这个垫片,https://github.com/addyosmani/getUserMedia.js/blob/gh-pages/lib/getUserMedia.js这会返回一个成功回调,

然后在回调中,

var video = camOptions.videoEl; //the video element

var vendorURL = window.URL || window.webkitURL;

try {
    video.src = vendorURL ? vendorURL.createObjectURL(stream) : stream;
}
catch(err) {
    //HERE IS THE TYPE ERROR IN SAFARI
}
Run Code Online (Sandbox Code Playgroud)

Kob*_*uek 5

TypeError你得到是因为你传递错误的约束时调用GetUserMedia。当您传递设备(浏览器)无法识别或具有无效值的约束时,会发生此错误。

此外,您需要使用video.srcObject而不是video.src which 已弃用。

这是 Safari 的一个工作示例。请记住,这仅适用于 iOS 11 及更高版本:

// Get the <video> element
var video = document.getElementById('vid');

// Default constrains
var constraints = { audio: true, video: true };

navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess);

var handleSuccess = function (stream) {  
    video.srcObject = stream;
};
Run Code Online (Sandbox Code Playgroud)