我对WKWebView(从iOS 14.3开始)中现在可用的getUserMedia API有一些问题。
在webview中的一个页面上,我将使用以下代码访问摄像头:
navigator.mediaDevices.getUserMedia({
video: {
facingMode: "user"
},
audio: false
}).then(function(webcamStream) {
document.querySelector("#video").srcObject = webcamStream; /* this is a HTML video tag available on the page */
}).catch(function() {
console.log("fail")
});
这个......大部分是有效的。不像在Safari(现在是Chrome)中,video元素不是只显示webcamStream
MediaStream对象的视频轨道中的内容,而是打开一个“直播”面板,当这个面板关闭时,视频轨道会暂停。在Safari和Chrome中,没有面板弹出窗口,是否有任何方法可以复制这个行为?
Image of the "Live Broadcast" panel
谢谢
2条答案
按热度按时间lymnna711#
对于Safari iOS基于Web的应用程序,请链接:Video Playback on Safari引用了元素需要具有playsInLine属性沿着以及除非静音否则不会自动播放,并且如果不在frame.
<video id="video" autoplay playsInline muted></video>
范围内,则会暂停播放,并且流可能需要 stream.play()才能启动。https://developer.apple.com/documentation/webkitjs
https://developer.apple.com/documentation/webkit/delivering_video_content_for_safari
至于录音,https://webkit.org/blog/11353/mediarecorder-api/有Safari 14.03中可用的MediaRecorder界面的信息?我没有太多关于原生iOS应用程序的信息。
qnyhuwrf2#
我想我已经找到了一个解决方案,你必须将WKWebViewConfiguration上的这些属性设置为true:
然后视频将按预期播放