ios 当应用到WKWebView内部的视频源对象时,有什么方法可以防止getUserMedia“直播”吗?

azpvetkf  于 2023-03-05  发布在  iOS
关注(0)|答案(2)|浏览(260)

我对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
谢谢

lymnna71

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应用程序的信息。

qnyhuwrf

qnyhuwrf2#

我想我已经找到了一个解决方案,你必须将WKWebViewConfiguration上的这些属性设置为true:

然后视频将按预期播放

相关问题