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

webrtc - 我可以在javascript中选择多个音频输出设备吗

我正在开发一个包含两个音频播放器的 webRTC 应用程序,每个播放器都应同时将其音频输出到不同的音频设备。

用户将选择例如“内部扬声器”作为一个流的输出,而“外部耳机”作为另一个流的输出。

我有使用getUserMedia()webRTC 为页面选择源和输出的经验: https ://webrtc.github.io/samples/src/content/devices/input-output/

但是,我找不到(甚至是实验性的)单个网页将单独的流输出到单独的设备的方法。

有没有办法做到这一点?谢谢!

0 投票
2 回答
153 浏览

javascript - getUserMedia.bind(navigator) 不返回承诺

历史:我想为 navigator.getUserMedia 创建一个别名/命名空间。在那个过程中,我做了以下事情:

我收到以下错误: 未捕获的类型错误:无法在“导航器”上执行“getUserMedia”:需要 3 个参数,但只有 1 个存在。

正如我们从文档中知道的那样,getUserMedia 接受成功和失败的回调,如果有人没有传递它们,则会返回一个承诺响应。为什么这不返回任何承诺?

非常感谢对这种奇怪的行为解释的任何帮助。

0 投票
1 回答
56 浏览

iphone - navigator.mediaDevices.getUserMedia 在 iphone chrome 中不起作用

navigator.mediaDevices.getUserMedia用于获取媒体

在 iPhone 的 chrome 中但不工作

铬版本:87

我的代码:

0 投票
0 回答
85 浏览

javascript - 使用 getDisplayMedia 进行屏幕共享并对共享 url 更改做出反应

用户捕获了一个流,navigator.mediaDevices.getDisplayMedia以便在视频通话中与他的银行助理共享页面。用户共享,例如,带有 url somebank.com的银行页面。但是他的银行助理是个坏人,他希望用户去otherbank.com查看用户在他的第二个帐户上有多少钱,并鼓励用户输入该地址并单击enter我可以对 JS 的 url 更改做出反应吗? 当我检查轨道时,它具有相同的idlabel,即使我转到另一个页面 - 所以乍一看,看起来我无法对页面 url 更改做出反应。提前感谢您的宝贵时间。

0 投票
0 回答
106 浏览

android - 通过android中webView的功能进行屏幕录制

我在 android 的 webview 上打开一个网页(外部)。在该网页上,有一个用于屏幕录制的按钮。如果我在台式机系统/笔记本电脑上打开它,屏幕录制工作正常。但是当我在 android 的 webview 上打开这个网页时,屏幕录制功能不起作用。就是说:navigator.mediaDevices.getDisplayMedia 不是一个函数

简而言之,webview 的屏幕录像机无法在 android 上运行。

0 投票
0 回答
24 浏览

javascript - 从连接到服务器的摄像头返回视频

大家好,所以我创建了带有流式传输音频和视频的 webRTC 流服务器,但是有一个问题我正在将自己的相机流式传输到浏览器,所以我可以看到自己,但我不想要那个,我想要的是得到来自连接到服务器的摄像机的流。

这是获取我的相机的 Js 函数

如何更改它以接收连接到服务器的相机

0 投票
0 回答
16 浏览

express - 尝试从移动浏览器使用 mediaDevices 时出现问题

我正在尝试使用 WebRTC (PeerJS + Socket.io) 和 React 构建一个简单的应用程序。我需要navigator.mediaDevices从 Chrome 等移动浏览器访问。我已经知道如果您不使用 HTTPS,您将无法访问此 API。

当我使用 react 脚本时,我可以做类似的事情HTTPS=true react-scripts start,这会起作用,现在我可以访问navigator.mediaDevices. 但是,它无法建立到后端的套接字和 PeerJS 连接。我的后端是用 Express 构建的。

我创建了自己的证书来使用 HTTPS 为我的本地 Express 后端提供服务,它工作正常,但网络请求说NET:ERR_CERT_AUTHORITY_INVALID.

我也知道我可以/etc/hosts用修改adb,但这不是我想做的方法。

是否有捷径可寻?

0 投票
1 回答
227 浏览

firefox - Web Audio Api : navigator.mediaDevices.getUserMedia ---> Error:NotReadableError: Concurrent mic process limit

我正在开发一个 3D 环境,它将两个麦克风与我的场景中的特定几何形状连接起来,在本地运行。我希望能够在使用哪个麦克风之间切换(当我按下键 A 时使用 mic1 和当我按下键 B 时使用 mic 2 )。我得到的错误是:Firefox ----> Error:NotReadableError: Concurrent mic process limit。Chrome -> 没有错误,它只是不切换设备

我该如何解决?我试图停止流,但也许我做得不对,有什么建议吗?

为了停止轨道,我首先调用这个函数:

在此处输入代码

0 投票
0 回答
223 浏览

asp.net - 使用 ffmpeg 将音频 blob 作为 mp3 文件保存到后端或 Azure

我有一个 asp.net 网络表单,我正在使用 javascript 和 navigator.mediaDevices.getUserMedia 来录制音频消息。此消息必须在记录后加载到 Azure 中。

到目前为止,我有: 2 个按钮,开始和停止录制音频 blob

在该过程结束时,我正在尝试使用 ffmpeg 将 blob 记录到我的应用程序的文件夹中,然后我可以将文件加载到 Azure 中(我已经为这个准备好了代码)。或者理想情况下,直接保存到 Azure。

我已经使用 nuget 包在我的应用程序中安装了 ffmpeg(我尝试了 Xabe ffmpeg 下载器和 Accord 视频 ffmpeg),但是当我运行函数 SendData() 时无法识别 ffmpeg 并且我收到此错误:未捕获的错误:模块名称“ffmpeg”有尚未加载上下文:_。使用要求([])

我的问题是:

  • 如何在 asp.net wbeform 中安装 ffmpeg 并在页面上注册?
  • 是否有另一种方法可以将音频 blob 保存到 Azure?
  • 是否可以将音频块保存到我以后可以上传到 Azure 的内存流中?

谢谢您的帮助

0 投票
0 回答
133 浏览

javascript - 使用 navigator.mediaDevices 的电子应用程序触发防病毒“网络摄像头访问尝试”

我开发了一个电子应用程序,并且有史以来第一次,我的防病毒软件 (ESET) 在应用程序加载时引发了“网络摄像头访问尝试”。有没有其他人经历过这个?

我的应用程序不使用网络摄像头,并且我没有需要网络摄像头的代码。

我确实有访问音频以进行录音的代码。我在防病毒软件中拒绝访问网络摄像头,并且该应用程序确实按设计运行。但是,每次加载应用程序时都会出现防病毒警告消息。可以想象,这并不酷。

这在更新 ESET (v14.2.10.0) 后立即浮出水面,因此他们有一些被触发的新规则。我不得不假设这不是 ESET 对某些东西的过度敏感(我不知道 AV 的功能和“责备”防病毒软件似乎不是为用户提供的合理回应),所以我不得不质疑我的网络部署-apis 在我的代码中。

我的音频访问使用本机网络 API:AudioContextNavigatorMediaDevicesMediaRecorder。关键代码行如下:

因为navigator.mediaDevices.enumerateDevices()不带参数,如{ audio: true }enumerateDevices()触发摄像头请求。

我使用 的结果enumerateDevices()来访问设备 ID,然后将其传入.getUserMedia()以选择特定设备。这允许用户为同一录音选择一个或多个音频输入。

有没有办法只查询音频设备的可用媒体/不包括视频?

是否有另一种方法来识别所有可用的音频设备?

我还能如何选择.getUserMedia()作为流返回的设备?

我能找到的唯一现有信息是在关闭的 Atom 社区论坛上: Electron 无缘无故地访问我的网络摄像头——两名开发人员在 20 年 9 月使用不同的防病毒软件发现了相同的行为。没有分辨率。

最初使用 Electron 8.5.0 看到。更新到 13.1.2 后问题仍然存在

软件版本: Electron 13.1.2、ESET 14.2.10.0