服务器项目前端调用摄像头失败,浏览器里摄像头开启失败:failed to allocate videosource...

当在Web浏览器尝试调用摄像头时遇到'NotReadableError: Failed to allocate videosource'错误,通常是因为摄像头已被其他应用程序占用。关闭占用摄像头的应用或进程即可解决问题。此外,也可能是操作系统、浏览器或页面级别的硬件错误导致。在使用高拍仪等设备时,确保正确配置和使用浏览器的媒体访问权限。
部署运行你感兴趣的模型镜像

通过程序在Web浏览器里调用摄像头,报错“NotReadableError: Failed to allocate videosource”的原因及解决办法。文末附Web调用摄像头的程序说明。

一开始在360浏览器里调用摄像头,报错“[object NavigatorUserMediaError]”,也没找到相关权限开关的设置!Web程序基本上是没问题的,因为此前成功开启过摄像头。想到可能权限的问题,欲换成在Firefox火狐浏览器运行程序并打开摄像头,错误提示“NotReadableError: Failed to allocate videosource”,百度了一下在stackoverflow找到了答案(英文):

NotReadableError: Failed to allocate videosource

Most commonly this happens on Windows because the webcam is already in use by another app. Firefox will throw this error on both

Windows and Mac even though only on Windows processes get exclusive access to the webcam.

翻译:最常见的是在Windows上发生,因为网络摄像头已经被另一个应用程序使用。Firefox会在Windows和Mac上抛出这个错误,即使只有在Windows进程中对网络摄像头进行独占访问。

Please make sure your camera is not been used by some other application (chrome, ie or any other browser). I wasted have of my day

searching for a solution, and in the end, found out my camera was used by other application...

翻译:请确保您的相机没有被其他应用程序使用(Chrome,即任何其他浏览器)。我浪费了一天的时间寻找一个解决方案,最后,发现我的相机被其他应用程序使用…

The error can happen for other reasons:

Although the user granted permission to use the matching devices, a hardware error occurred at the operating system, browser, or

Web page level which prevented access to the device.

翻译:由于其他原因,错误可能发生:尽管用户授予了使用匹配设备的权限,但是在操作系统、浏览器或网页级别上发生了硬件错误,从而阻止了对设备的访问。

综合以上,原因是摄像头被其它应用占用了,比如通过“我的电脑”面板直接运行了摄像头软件,只要关闭相关应用软件或结束进程即可。

应用场景说明

在软件里(基于火狐浏览器)远程审方,需通过高拍仪扫描处方。

b441e59cb15316ba30964cbb3e67a1a2.png高拍仪:failed to allocate videosource

ce3809f4e9f13394bf48d6b8ed3efae5.png火狐浏览器里对摄像头、麦克风的开启给出安全提醒

6e92b39165f4f3f2a16204a4ad58dd71.png浏览器里成功开启摄像头

相关技术API(参考MDN技术文档)

navigator.getUserMedia()

语法:

navigator.getUserMedia ( constraints, successCallback, errorCallback );

参数:

constraints

MediaStreamConstaints对象指定了请求使用媒体的类型,还有每个类型的所需要的参数。具体细节请参见MediaDevices.getUserMedia() 方法下面的constraints部分。

successCallback

当调用成功后,successCallback中指定的函数就被调用,包含了媒体流的MediaStream对象作为它的参数,你可以把媒体流对象赋值给合适的元素,然后使用它,就像下面的例子一样:

function(stream) {

var video = document.querySelector('video');

video.src = window.URL.createObjectURL(stream);

video.onloadedmetadata = function(e) {

// Do something with the video here. };

}

errorCallback

当调用失败,errorCallback中指定的函数就会被调用,MediaStreamError对象作为它唯一的参数;此对象基于DOMException对象构建。错误码描述见参见以下:

PermissionDeniedError: 使用媒体设备请求被用户或者系统拒绝

NotFoundError:找不到constraints中指定媒体类型

该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

此API已更名为 MediaDevices.getUserMedia(),这个已废弃的API版本仅为了向后兼容而存在。新代码应当使用Navigator.mediaDevices.getUserMedia() 替代.

您可能感兴趣的与本文相关的镜像

Langchain-Chatchat

Langchain-Chatchat

AI应用
Langchain

Langchain-Chatchat 是一个基于 ChatGLM 等大语言模型和 Langchain 应用框架实现的开源项目,旨在构建一个可以离线部署的本地知识库问答系统。它通过检索增强生成 (RAG) 的方法,让用户能够以自然语言与本地文件、数据库或搜索引擎进行交互,并支持多种大模型和向量数据库的集成,以及提供 WebUI 和 API 服务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值