问题标签 [mediadevices]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1056 浏览

javascript - navigator.mediaDevices.ondevicechange 事件未在 Firefox 71 (Mac OS) 上触发

在进行 webrtc 呼叫之前,我正在锁定蓝牙设备,我拨打电话并在通话期间关闭蓝牙设备。关闭蓝牙设备不会触发ondevicechange事件。

chrome浏览器中的相同场景,ondevicechange事件被触发。

任何潜在客户或任何其他人都面临与 Firefox 相同的问题

0 投票
1 回答
938 浏览

javascript - navigator.mediaDevices.ondevicechange 在使用音频插孔时不起作用

我正在尝试使用 MediaDevice API 响应设备更改事件,如下所示

它仅适用于不适用于 3.5m 插孔的 USB 设备

0 投票
1 回答
583 浏览

javascript - 在不打开相机的情况下请求相机许可

每当我在浏览器上接受使用相机的权限时,我的桌面相机就会亮起。我认为这是因为 navigator.mediaDevices.getUserMedia() 成功返回一个流,并且该流直接来自相机。

我不希望在接受许可后立即从相机流出。

有没有一种方法可以让我无需“立即”使用相机就可以请求许可。我以后会用相机。

0 投票
1 回答
1512 浏览

javascript - 视频流启动时触发的事件,使用getUserMedia

我正在使用带有视频流输入(网络摄像头或手机摄像头)的 ZXing JS 条码扫描器库https://github.com/zxing-js/library/ ,如以下代码中所述。

一般来说,<video>当视频流刚刚开始时,如何将事件侦听器添加到 a 以执行操作?(使用MediaDevices.getUserMedia视频流API的视频,从ZXing的开始decodeFromInputVideoDevice)?

注意:目前我正在使用setTimeout(..., 2000)当用户单击按钮开始视频时,但显然如果出现对话框“您要允许该网站使用摄像头设备吗?”,则此操作失败,然后2 秒是不够的。事件“VideoHasJustStarted”的监听器会更好。

编辑:
这是一个显示问题的 jsFiddle:不使用各种事件:started, devicechange.

0 投票
1 回答
439 浏览

javascript - microsoft edge mobile ios 13.3.1 中的 navigator.mediaDevices

有没有人尝试在 microsoft edge 移动浏览器上从 iphone 相机捕获视频?它有效吗?navigator.mediaDevices返回我undefined,我想知道该浏览器是否根本不支持 mediaDevices API,或者它只是一个相机访问问题。

0 投票
4 回答
2233 浏览

javascript - Javascript DOMException:关联的 Track 处于无效状态

我正在尝试在 nodeJS 服务器上创建照片捕获 Web 应用程序,并且我正在使用下面的javascript代码。

gotMedia 函数是这样的:

一切正常,图像捕获还可以,但是当我一张一张快速拍摄照片时出现错误,上面写着:

grabFrame() 错误:DOMException:关联的 Track 处于无效状态。

这通常发生在我拍摄太多照片时(例如快速单击大约 20 秒以上),但前五张快照也发生了这种情况。有谁知道发生了什么,我应该改变什么,以解决这个问题?感谢您的时间。

0 投票
0 回答
197 浏览

javascript - MediaDevices.enumerateDevices 返回的设备标签列表

在浏览器中调用navigator.mediaDevices.enumerateDevices会返回MediaDeviceInfo客户端上存在的每个媒体设备。这包括deviceIdgroupIdkindlabel

过滤kind === 'videoinput'我可以获得可用的摄像机列表。

但是,label不同客户端上的设备似乎差异很大。例如,MacBook Pro 上的摄像头标签可能是“FaceTime HD Camera (05ac:8514)”,而 Pixel 3 主摄像头上的标签是“camera2 0, face back”。

是否有常见客户端(移动设备、笔记本电脑或 USB 相机)返回哪些标签的列表,以便我可以在我的代码中解析它们并向最终用户提供一致的名称?

0 投票
0 回答
349 浏览

audio - 选择要输出音频的扬声器

假设您正在构建一个 Web 应用程序,它将在具有两个扬声器、扬声器和您在通话时放在耳边的电话扬声器的移动设备上运行。

可以选择扬声器以使用 HTML5 和 JavaScript 输出音频吗?我们在打电话时将电话放在扬声器中,反之亦然。

我已经检查了 MDN 文档中有关音频元素和 MediaDevices API 的信息,但通常看不到有关音频输出设备的任何信息,通常都是关于输入设备的。

0 投票
0 回答
521 浏览

javascript - getDisplayMedia“无法启动音频源”

我有 chrome,版本信息:

Google Chrome 80.0.3987.149(官方内部版本)(64 位)(同类群组:稳定版) 修订版 5f4eb224680e5d7dca88504586e9fd951840cac6-refs/branch-heads/3987_137@{#16} 操作系统 Windows 7 Service Pack 1(内部版本 7601.24544)

当我执行

然后在弹出窗口中选择“共享音频”,我得到一个 DOM 异常:

“无法启动音频源”

这只发生在我的桌面 windows 7 上,但在我的 windows 7 笔记本电脑上,它不会显示此错误。我刚刚从我的程序文件中复制了 Chrome 文件夹并将其放在桌面上,从工作的笔记本电脑上,但仍然存在错误。

我注意到在对音频的支持下,它提到 chrome 版本 74^ 是 [几乎唯一受支持的],我似乎有 80 版。

如果有办法,任何想法如何解决这个问题?

0 投票
1 回答
145 浏览

javascript - 是否可以在没有画布 api 的情况下直接操作媒体流?

我使用 javascript 和 WebRTC 创建了一个简单的视频聊天,用于在用户客户端之间建立连接使用画布api修改我的意思是视频流被处理然后在画布中绘制下一个reproccess以便作为从中获得的MediaStream发送我觉得所有这些步骤都是多余的,我想知道是否存在一些直接操作视频流的方法避免画布API的使用?