在 iOS 上读取实时摄像机流的 getUserMedia() 替代方案?

Alternative to getUserMedia() for reading live camera stream on iOS?

我们正在使用 QuaggaJS 构建一个移动条码扫描仪,它可以直接从设备的相机流中读取条码。在 desktop/Android 上工作正常,但在 iOS.

上根本不起作用

根据初步研究,我发现 iOS 根本不支持通过 Safari 或 iOS Chrome(下面的相关链接)的 WebRTC/getUserMedia,这是 QuaggaJS 用来读取相机流的。

我也在this question看到关于在iOS上捕获静止图像的信息,但提供的答案仅用于捕获静止图像,而不是用于实时读取流。

我的问题 - 有没有其他方法可以从 iOS 相机抓取流?也许有一个不使用 getUserMedia 的替代库而不是 QuaggaJS?我不太精通 Javascript,所以我不确定除了 getUserMedia 之外是否还有其他可能的方法来访问相机流。

A "no" 是一个可以接受的答案;我只是想找更有经验的人提供指导。


Appendix/related 链接:

navigator.getUserMedia alternative API for iOS safari mobile browser?

https://www.quora.com/Why-is-navigator-getUserMedia-not-supported-in-Safari

https://bloggeek.me/webrtc-apple-or-microsoft/

HTML5: getUserMedia iOS issue?

quaggaJS 页面有一个功能兼容性矩阵可以回答您的问题:

iOS Safari 不支持 getusermedia。

根据 quaggaJS 文档 (https://github.com/serratus/quaggaJS#browser-support)

Quagga 使用了许多尚未被所有浏览器实现的现代 Web-APIs。 Quagga 有两种运行模式:

  1. 分析静态图像和

  2. 使用相机解码来自 live-stream 的图像。后者需要 MediaDevices API 的存在。您可以跟踪每种模式所用 Web-APIs 的兼容性:

    • 静态图片
    • 直播

我建议您在 iOS 上使用静态图像模式,因为不支持直播模式。

2017 年更新:Apple 刚刚宣布 getUserMedia 最终将在 iOS11.

中得到支持

2019 年 8 月更新:仅适用于 Safari,不适用于任何类型的 WebView。感谢@Klathmon 的评论。