当我在 safari
上尝试从 mac
中的摄像头获取视频流时出现问题。
对于获取流,我使用函数 navigator.mediaDevices.getUserMedia({video: true})
在 chrome
上运行良好,但在 safari
上有时会抛出错误:
NotReadableError: The I/O read operation failed.
最奇怪的是它不稳定,它可能会出现错误,一段时间后它会正常工作(无需更改代码)...我检查了很多次但没有找到依赖性为什么它或工作或不。
还有一件奇怪的事,错误仅在 Angular 显示,所以我认为问题可能出在 zone.js
上,但我在尝试取出时没有找到解决方案从 zone
获取流的函数调用(为了从 zone
取出我使用了 runOutsideAngular
和 run
)。
我尝试使用一些 npm
库,例如 ngx-webcam
、ack-angular-webcam
但这也无济于事,当错误显示在我的代码中它也出现在插件代码中(我猜这是因为他们使用相同的函数来获取流)。
因此,我在互联网上的长期研究没有给出适当的结果,我不得不询问建议、解决方案或至少是想法。
我的问题
如何避免出现这个错误,为什么不经常显示,这个错误的原因是什么?
感谢您的帮助。
最佳答案
与angular无关,简单运行:
navigator
.mediaDevices
.getUserMedia({audio: true, video: false})
.then(
function(e) {console.log("success",e);},
function(e){console.log("reject",e);}
)
在 javascript 控制台中,您将看到 I/O 错误,仅在 Safari 上。这看起来像是 WebKit 错误。
(我会在找到更多详细信息后尽快完成回答)。
关于javascript - macOS Safari 问题(getUserMedia)以 Angular 6 从摄像头获取视频流 - NotReadableError : The I/O read operation failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297611/