问题标签 [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.
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 设备的名称)。
任何线索将不胜感激。
reactjs - 为什么使用 Recorder.js 和 MediaDevices 录制多个音频会导致稍后出现空录制?
我正在使用 Recorder.js 和 MediaDevices 来录制音频。前几个录音很好,但在一些录音之后(据我所知是随机的),录制的音频是空的。
如果我快速连续按录制和停止一段时间,我可以创建相同的问题。
这是我的代码:
每次按下 Record 和 Stop 时都会调用recordFunction 。我的实现不正确吗?
如果我等待某个时间(在空录音之后),比如说 5 秒,录音机开始像以前一样正常工作。我无法理解我应该尝试什么。我对网络开发和录音相当陌生。
任何建议,将不胜感激。
mediadevices - 如何从手机下载文件?MediaDevices device.DownloadFile() 方法抛出 Not Implmented 异常
我正在尝试使用 MediaDevices 库从我的手机下载文件。我可以在手机上看到这些文件,但 MediaDevice.DownloadFile() 会引发 NotImplemented 异常。我有 1.8.0 版的库。这是我的程序:
javascript - 使用 MediaDevices API 的 getDisplayMedia() 的完整网页截图
我正在使用 navigator.mediaDevices.getDisplayMedia 来获取屏幕截图,但它捕获了页面的唯一可见部分,但还有更多内容隐藏在滚动区域中并且被遗漏了。那么是否有可能捕获整页?
我尝试使用 Html2Canvas 和 dom-to-image 来截取整页截图,但它们有自己的回退,就像他们不捕获 iframe、SVG 等一样。
任何帮助将不胜感激。
safari - 如何在 Safari 中请求替代视频输入?
要从 获取替代视频输入MediaDevices.getUserMedia
,我的理解是您需要将 传入deviceID
作为约束。但是,在 Safari 中,要访问deviceID
s via enumerateDevices
,我需要先调用getUserMedia
并获得浏览器的许可(也许还有另一种方法?)。问题是这个初始getUserMedia
调用只返回我已获得许可的设备的设备信息,所以我仍然没有备用视频输入的设备 ID。
我怎样才能得到deviceID
这个视频输入?
就我而言,我正在尝试找到deviceID
Snapchat 的“Snap Camera”。在 Chrome 中,我可以找到并流式传输此视频输入。
webrtc - 如何在基于 Chromium 的功能测试中使用导航媒体设备?(TestCafe)
TL;DR如何运行使用navigator.mediaDevices
TestCafe 和 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:如果重要的话,这是应该通过的简单测试:
javascript - JavaScript 以编程方式检查是否正在使用相机
我正在为视频聊天应用程序编写功能测试。
我想确保当用户离开会议时相机会关闭。所以,我正在尝试检查相机是否正在使用。
有没有办法以编程方式做到这一点?我找不到任何关于navigator.MediaDevices
“嘿,你的相机正在被使用”的方法。
reactjs - mediaSession 不适用于流式传输
当涉及到简单的视频文件时,我的 mediaSession 工作得很好。您可以使用媒体键暂停和播放。
这是控制台登录暂停和播放的功能
这是带有随机视频的视频元素
但我的问题是它不适用于流。可能是因为它使用了 srcObject 吗?很高兴能够使用媒体键暂停/播放流媒体,就像 youtube/twitch 对直播视频一样。
这就是我如何使用它来进行桌面流式传输。下面是触发流的元素:
它会在下面运行这个函数
这是一个活生生的例子: https ://codesandbox.io/s/optimistic-thunder-zyoz4?file=/src/App.js
立即播放视频文件(如果没有,请按播放),您可以立即访问媒体键。按启动流启动桌面流,但您丢失了媒体密钥。
对不起,这很长...... 总之,我想使用媒体键进行流媒体。
希望这很清楚。先感谢您!
google-chrome - Chrome - 默认情况下使用 navigator.mediaDevices.getDisplayMedia 启用“共享音频”
我想用 Chrome 捕捉标签音频。我打电话
但默认情况下,Chrome 共享屏幕上未勾选“共享音频”选项。有没有办法从客户端代码中强制“共享音频”选项?