如何在移动网络中从 navigator.getUserMedia() 获取对象?

How to obtain object from navigator.getUserMedia() in mobile web?

正在尝试将 JavaScript reference/promise 转换为 HTML5 和 WebRTC 中的 MediaStream returned from MediaDevices

JavaScript 这里是 Chrome 上的 运行 和 iOS 上的 Safari 和 Android.

navigator.mediaDevices.getUserMedia(session, initRec , onErr);

这会抛出 TypeError: undefined is not an object (evaluating 'navigator.mediaDevices.getUserMedia')

好吧,让我们试试稍微老一点的方法:

navigator.getUserMedia(parms,initfunc,errfunc);

这会抛出 TypeError: navigator.getuserMedia is not a function. (In 'navigator.getUserMedia(parms,initfunc,errfunc)', 'navigator.getUserMedia' is undefined)

注意: 这两个调用都适用于桌面版本。 移动网络曾经用于录音吗?

Safari(或 iOS 上的任何浏览器)在即将推出的 Safari 11 之前不支持 getUserMedia 和 WebRTC。有关详细信息,请参阅 webkit blog post 并注意它没有提到 MediaRecorder API.

尝试通过 HTTPS 提供网页。我读到 iOS Safari 只允许在安全连接上访问麦克风(和摄像头)。

我在 Ionic Angular 应用程序中实现 ng-audio-recorder 时遇到了同样的问题。在桌面上完美工作时,移动 safari 会抛出此错误。切换到 HTTPS 解决了问题。