不使用WebRTC访问相机或网络摄像头

5

在我的网站中,需要访问相机或网络摄像头。但是根据https://forums.developer.apple.com/thread/88052(请指正),iOS Webview尚不支持WebRTC。因此,我正在尝试找到一种无需WebRTC即可访问它的方法。是否有任何解决方案?

  1. And is this following code, a part of utilizing webRTC? Because the console.log shows up on ios webview

    function hasGetUserMedia() {
      return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || 
        navigator.mozGetUserMedia || navigator.msGetUserMedia);
    }
    
    //then, somewhere in the code
    if (!hasGetUserMedia()) {           
      console.log( "webRTC is not supported in your browser" );//it shows up on ios webview              
    }
    
    //other code
    navigator.mediaDevices.getUserMedia({
     audio: false, //no audio
     video: {deviceId: {exact: videoSource.camera_id} }
    })
    
  2. If yes, so what's the workaround which not using webRTC, and can be run on android webview, ios webview, and web browsers?


1
上面列出的代码不是webRTC的一部分。您可以在webview中很好地使用它。 - CuriousMind
我已经编辑了代码,你确定不是这个问题吗?因为控制台日志已经显示出来了。而且相机设备也没有被访问。 - Alvin Theodora
2
iOS 的 WebViews 不支持 getUserMedia。WebRTC 对此并不重要。因此,没有一种方法可以访问摄像头流。 - deceze
1个回答

9

2021年更新:

现在,我们可以在iOS WebViews上使用getUserMedia了!


好消息:

iOS 14.3开始,在WKWebView中可以访问getUserMedia

每当我对于类似这样的浏览器功能有疑问时,我都会很乐意去查看caniuse.com。在这种情况下,Safari和Chrome for iOS的条目上有一条注释。

iOS 14.3之前,在UIWebViewWKWebViewgetUserMedia无法返回任何视频输入设备,但只有在Safari直接打开时才能返回。

旧消息:

在2021年之前,我们无法在iOS Safari之外访问getUserMedia。所以那时的解决方法是创建一个网站并引导iOS用户在Safari中访问该网站,而不是为iOS创建本地应用程序。

其他消息:

getUserMedia控制对用户相机和麦克风的访问权限,而WebRTC则帮助您将这个音频/视频发送到另一个客户端,例如视频聊天中。这里您只需要先获取视频,所以不用担心WebRTC,但是当您需要时,我建议您查看这篇文章

如果您想要测试getUserMedia或WebRTC功能,请尝试使用这些提供的示例,这样您可以确保不是代码的问题:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接