问题标签 [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 回答
418 浏览

javascript - 为 Firefox 和 Safari 浏览器的 WebRTC 应用程序获取音频 I/O 设备的名称

因此,对于我们的 WebRTC 应用程序,我们正在使用官方的EnumerateDevices API。Chrome 浏览器的 API 输出包含音频 I/O 设备的名称(标签)。因此,可以从 API 响应中提取设备的名称。

但是相同的 API 不会对 Firefox 产生类似的响应。对于 Firefox,结果不包含连接的 I/O 设备的名称(标签)。

对于 Safari,仅信息仅涉及音频输入设备。

是否有解决方法或另一组 API/库可用于获取 Firefox 和 Safari 浏览器的类似信息(音频 I/O 设备的名称)。

任何线索将不胜感激。

0 投票
1 回答
326 浏览

reactjs - 为什么使用 Recorder.js 和 MediaDevices 录制多个音频会导致稍后出现空录制?

我正在使用 Recorder.js 和 MediaDevices 来录制音频。前几个录音很好,但在一些录音之后(据我所知是随机的),录制的音频是空的。

如果我快速连续按录制和停止一段时间,我可以创建相同的问题。

这是我的代码:

每次按下 Record 和 Stop 时都会调用recordFunction 。我的实现不正确吗?

如果我等待某个时间(在空录音之后),比如说 5 秒,录音机开始像以前一样正常工作。我无法理解我应该尝试什么。我对网络开发和录音相当陌生。

任何建议,将不胜感激。

0 投票
1 回答
251 浏览

mediadevices - 如何从手机下载文件?MediaDevices device.DownloadFile() 方法抛出 Not Implmented 异常

我正在尝试使用 MediaDevices 库从我的手机下载文件。我可以在手机上看到这些文件,但 MediaDevice.DownloadFile() 会引发 NotImplemented 异常。我有 1.8.0 版的库。这是我的程序:

0 投票
0 回答
937 浏览

javascript - 使用 MediaDevices API 的 getDisplayMedia() 的完整网页截图

我正在使用 navigator.mediaDevices.getDisplayMedia 来获取屏幕截图,但它捕获了页面的唯一可见部分,但还有更多内容隐藏在滚动区域中并且被遗漏了。那么是否有可能捕获整页?

我尝试使用 Html2Canvas 和 dom-to-image 来截取整页截图,但它们有自己的回退,就像他们不捕获 iframe、SVG 等一样。

任何帮助将不胜感激。

0 投票
2 回答
2680 浏览

google-chrome - 谷歌浏览器不允许选择要使用的相机

我正在开发一个流媒体网站。它可以工作,但是,有时,我安装了一个名为 OBS 的软件,它安装了一个虚拟相机。从那时起,当网站尝试使用摄像头时,它使用 OBS 虚拟摄像头,而不是我的物理摄像头。但这只发生在我的电脑上。当要使用相机时,会出现此权限对话框:

权限对话框

在我的笔记本电脑中,这是可行的,也就是说,在同一个对话框中,它显示了一个组合框,允许选择要使用的相机。

在网站上,我以这种方式启动相机:

我可以用 getUserMedia 函数做点什么吗?或者这个问题只与 PC 配置有关?

0 投票
0 回答
39 浏览

safari - 如何在 Safari 中请求替代视频输入?

要从 获取替代视频输入MediaDevices.getUserMedia,我的理解是您需要将 传入deviceID作为约束。但是,在 Safari 中,要访问deviceIDs via enumerateDevices,我需要先调用getUserMedia并获得浏览器的许可(也许还有另一种方法?)。问题是这个初始getUserMedia调用只返回我已获得许可的设备的设备信息,所以我仍然没有备用视频输入的设备 ID。

我怎样才能得到deviceID这个视频输入?

就我而言,我正在尝试找到deviceIDSnapchat 的“Snap Camera”。在 Chrome 中,我可以找到并流式传输此视频输入。

0 投票
1 回答
321 浏览

webrtc - 如何在基于 Chromium 的功能测试中使用导航媒体设备?(TestCafe)

TL;DR如何运行使用navigator.mediaDevicesTestCafe 和 Chromium 及其方法的功能测试?

我正在尝试使用 TestCafe 编写功能测试来测试一些 WebRTC 代码。我正在使用反应。我有一个枚举设备的自定义钩子:

在哪里getInputDeviceInfos调用navigator.mediaDevices.enumerateDevices

当我在浏览器中运行此代码时,它可以完美运行。当它在 TestCafe 的功能测试中运行时,它会抛出异常。

彻底的谷歌搜索只给出了添加标志--use-fake-ui-for-media-stream--use-fake-device-for-media-stream启动命令的答案(前者避免了授予相机/麦克风权限的需要,并且梯子getUserMedia()根据文档提供测试模式而不是实时相机输入),其中我做了:

仍然发生相同的错误。console.log上面钩子中的 显示了一个navigator没有mediaDevices.

我必须做些什么才能让这些测试通过?

PS:如果重要的话,这是应该通过的简单测试:

0 投票
2 回答
712 浏览

javascript - JavaScript 以编程方式检查是否正在使用相机

我正在为视频聊天应用程序编写功能测试。

我想确保当用户离开会议时相机会关闭。所以,我正在尝试检查相机是否正在使用。

有没有办法以编程方式做到这一点?我找不到任何关于navigator.MediaDevices“嘿,你的相机正在被使用”的方法。

0 投票
0 回答
292 浏览

reactjs - mediaSession 不适用于流式传输

当涉及到简单的视频文件时,我的 mediaSession 工作得很好。您可以使用媒体键暂停和播放。

这是控制台登录暂停和播放的功能

这是带有随机视频的视频元素

但我的问题是它不适用于流。可能是因为它使用了 srcObject 吗?很高兴能够使用媒体键暂停/播放流媒体,就像 youtube/twitch 对直播视频一样。

这就是我如何使用它来进行桌面流式传输。下面是触发流的元素:

它会在下面运行这个函数

这是一个活生生的例子: https ://codesandbox.io/s/optimistic-thunder-zyoz4?file=/src/App.js

立即播放视频文件(如果没有,请按播放),您可以立即访问媒体键。按启动流启动桌面流,但您丢失了媒体密钥。

对不起,这很长...... 总之,我想使用媒体键进行流媒体。

希望这很清楚。先感谢您!

0 投票
0 回答
198 浏览

google-chrome - Chrome - 默认情况下使用 navigator.mediaDevices.getDisplayMedia 启用“共享音频”

我想用 Chrome 捕捉标签音频。我打电话

但默认情况下,Chrome 共享屏幕上未勾选“共享音频”选项。有没有办法从客户端代码中强制“共享音频”选项?