当应用于 WKWebView 中的视频 srcObject 时,有什么方法可以防止 getUserMedia "Live Broadcast"?

Any way to prevent getUserMedia "Live Broadcast" when applied to a video srcObject inside WKWebView?

我在使用 WKWebView 中可用的 getUserMedia api 时遇到了一些问题(从 iOS 14.3 开始)。

在 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)不同,视频元素不只是显示 webcamStream MediaStream 对象的视频轨道中的内容,而是打开“直播”面板并且视频轨道暂停每当关闭时。无论如何要复制 Safari 和 Chrome 中没有面板弹出窗口的行为?

Image of the "Live Broadcast" panel

谢谢

对于 Safari iOS 基于 Web 的应用程序,link:Video Playback on Safari 引用该元素需要具有 playsInLine 属性以及它不会自动播放的想法,除非它是静音,如果超出框架,它会暂停。 <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 应用程序的信息。