gpt4 book ai didi

javascript - mediaDevices.getUserMedia 不适用于 iOs 11 中的 Safari 11(视频为黑色)

转载 作者:行者123 更新时间:2023-12-04 00:30:17 25 4
gpt4 key购买 nike

我找不到这方面的解释。从我读到的内容来看,Safari 11 似乎正在使用来自 iOs 11 的 getUserMedia API。所以我不明白这段代码有什么问题(我的目标是在直播中获取 QR 码,但在这里被阻止):

Controller

function BarcodeReaderQRCtrl($scope) {
/* widget controller */
var c = this;
var constraints = { audio: true, video: { width: 640, height: 480 } };

c.startMedia = function() {
navigator.mediaDevices
.getUserMedia(constraints)
.then(function(mediaStream) {
var video = document.getElementById('idvideo');
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
};
})
.catch(function(err) {
console.log(err.name + ': ' + err.message);
});
};
}

HTML

<div>
<a class="btn btn-default" href="#" role="button" ng-click="c.startMedia()">Start</a>
<div>
<video id="idvideo"></video>
</div>
</div>

有什么建议吗?

最佳答案

问题不在你说的 API 中,这是因为移动浏览器需要一个有效的 click 事件来开始播放视频,所以 video.play() 将不起作用在没有用户交互的移动设备上。例如,这篇文章证明了这一点:https://stackoverflow.com/a/16860922/6053654 .我通常做的:我只是在视频上添加 play 图标(仅在移动设备上)以诱导用户点击,然后,我将 video.play() 绑定(bind)到此点击事件。听起来很简单。

关于javascript - mediaDevices.getUserMedia 不适用于 iOs 11 中的 Safari 11(视频为黑色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47243912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com