首页 > 解决方案 > macOS Safari 问题与(getUserMedia)以角度 6 从相机获取视频流 - NotReadableError:I/O 读取操作失败

问题描述

当我尝试从相机获取视频流时出现mac问题safari
对于获取流,我使用函数navigator.mediaDevices.getUserMedia({video: true})
Onchrome它工作得很好,但safari有时会抛出错误:

NotReadableError:I/O 读取操作失败。

控制台错误屏幕

最奇怪的是它不稳定,它可能会出现错误,一段时间后它会正常工作(不更改代码) ......我检查了很多次,但没有找到依赖关系为什么它或工作或不工作。

错误仅在 angular 中显示的另一件奇怪的事情,所以我认为问题可能与zone.js但在尝试取出函数调用以从中获取流时我没有找到解决方案zone(用于取出zone我使用的runOutsideAngularand run)。

我尝试使用一些npm类似的库ngx-webcamack-angular-webcam但这也无济于事,当我的代码中显示错误时,它也出现在插件代码中(我猜这是因为它们使用相同的函数来获取流)。

所以,我在互联网上的长期研究没有给出适当的结果,我不得不询问建议、解决方案或至少是想法。

我的问题
如何避免出现此错误,为什么它不经常显示以及此错误的原因是什么?

谢谢你的帮助。

标签: javascriptangularmacossafarigetusermedia

解决方案


Not related to angular, simply running:

navigator.mediaDevices.getUserMedia({audio: true, video: false}).then(function(e) {console.log("success",e);}, function(e){console.log("reject",e);})

in a javascript console, and you will see the I/O error, only on Safari. This looks like a WebKit bug.

(i will complete the answer as soon as I found more details).


推荐阅读