首页 > 解决方案 > 在没有 webRTC 的情况下访问摄像头或网络摄像头

问题描述

在我的网站中,它需要访问相机或网络摄像头。但是基于https://forums.developer.apple.com/thread/88052的 ios webview 尚不支持webRTC(请参阅 cmiiw)。因此,我正在尝试找到一种无需 webRTC 即可访问它的方法。有没有?

  1. 以下代码是使用 webRTC 的一部分吗?因为 console.log 出现在 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. 如果是,那么不使用 webRTC 并且可以在 android webview、ios webview 和 web 浏览器上运行的解决方法是什么?

标签: javascripthtmlwebviewwebrtc

解决方案


2021年编辑:

我们现在可以访问getUserMediaiOS WebViews 了!


好消息:

从 iOS 14.3 开始,iOS 现在允许getUserMediaWKWebView

每当我对此类浏览器功能有疑问时,我发现查看caniuse.com非常有帮助。在这种情况下,iOS 版 Safari 和 Chrome 的条目上有一个注释

iOS 14.3 之前在orgetUserMedia中不返回视频输入设备,而只在 Safari 中直接返回UIWebViewWKWebView

旧闻:

在 2021 年之前,我们无法getUserMedia在 Safari 之外的 iOS 上访问。所以当时,一种解决方法是建立一个网站并引导 iOS 用户在 Safari 中访问该网站,而不是为 iOS 制作原生应用程序。

其他新闻:

getUserMedia控制对用户摄像头和麦克风的访问,而 WebRTC 可帮助您将该音频/视频发送到另一个客户端,例如在视频聊天中。在这里,您首先要获取视频,因此您不必担心 WebRTC,但是当您这样做时,我建议您查看对我有帮助的这篇文章

如果您想自己测试getUserMedia或 WebRTC 功能,请尝试使用这些提供的示例,这样您就可以确定这不是您自己的代码的错 :)


推荐阅读