问题标签 [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.
webrtc - 我可以在javascript中选择多个音频输出设备吗
我正在开发一个包含两个音频播放器的 webRTC 应用程序,每个播放器都应同时将其音频输出到不同的音频设备。
用户将选择例如“内部扬声器”作为一个流的输出,而“外部耳机”作为另一个流的输出。
我有使用getUserMedia()
webRTC 为页面选择源和输出的经验:
https ://webrtc.github.io/samples/src/content/devices/input-output/
但是,我找不到(甚至是实验性的)单个网页将单独的流输出到单独的设备的方法。
有没有办法做到这一点?谢谢!
javascript - getUserMedia.bind(navigator) 不返回承诺
历史:我想为 navigator.getUserMedia 创建一个别名/命名空间。在那个过程中,我做了以下事情:
我收到以下错误: 未捕获的类型错误:无法在“导航器”上执行“getUserMedia”:需要 3 个参数,但只有 1 个存在。
正如我们从文档中知道的那样,getUserMedia 接受成功和失败的回调,如果有人没有传递它们,则会返回一个承诺响应。为什么这不返回任何承诺?
非常感谢对这种奇怪的行为解释的任何帮助。
iphone - navigator.mediaDevices.getUserMedia 在 iphone chrome 中不起作用
我navigator.mediaDevices.getUserMedia
用于获取媒体
在 iPhone 的 chrome 中但不工作
铬版本:87
我的代码:
javascript - 使用 getDisplayMedia 进行屏幕共享并对共享 url 更改做出反应
用户捕获了一个流,navigator.mediaDevices.getDisplayMedia
以便在视频通话中与他的银行助理共享页面。用户共享,例如,带有 url somebank.com的银行页面。但是他的银行助理是个坏人,他希望用户去otherbank.com查看用户在他的第二个帐户上有多少钱,并鼓励用户输入该地址并单击enter
。
我可以对 JS 的 url 更改做出反应吗?
当我检查轨道时,它具有相同的id
和label
,即使我转到另一个页面 - 所以乍一看,看起来我无法对页面 url 更改做出反应。提前感谢您的宝贵时间。
android - 通过android中webView的功能进行屏幕录制
我在 android 的 webview 上打开一个网页(外部)。在该网页上,有一个用于屏幕录制的按钮。如果我在台式机系统/笔记本电脑上打开它,屏幕录制工作正常。但是当我在 android 的 webview 上打开这个网页时,屏幕录制功能不起作用。就是说:navigator.mediaDevices.getDisplayMedia 不是一个函数
简而言之,webview 的屏幕录像机无法在 android 上运行。
javascript - 从连接到服务器的摄像头返回视频
大家好,所以我创建了带有流式传输音频和视频的 webRTC 流服务器,但是有一个问题我正在将自己的相机流式传输到浏览器,所以我可以看到自己,但我不想要那个,我想要的是得到来自连接到服务器的摄像机的流。
这是获取我的相机的 Js 函数
如何更改它以接收连接到服务器的相机
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
,但这不是我想做的方法。
是否有捷径可寻?
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 -> 没有错误,它只是不切换设备
我该如何解决?我试图停止流,但也许我做得不对,有什么建议吗?
为了停止轨道,我首先调用这个函数:
在此处输入代码
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 的内存流中?
谢谢您的帮助
javascript - 使用 navigator.mediaDevices 的电子应用程序触发防病毒“网络摄像头访问尝试”
我开发了一个电子应用程序,并且有史以来第一次,我的防病毒软件 (ESET) 在应用程序加载时引发了“网络摄像头访问尝试”。有没有其他人经历过这个?
我的应用程序不使用网络摄像头,并且我没有需要网络摄像头的代码。
我确实有访问音频以进行录音的代码。我在防病毒软件中拒绝访问网络摄像头,并且该应用程序确实按设计运行。但是,每次加载应用程序时都会出现防病毒警告消息。可以想象,这并不酷。
这在更新 ESET (v14.2.10.0) 后立即浮出水面,因此他们有一些被触发的新规则。我不得不假设这不是 ESET 对某些东西的过度敏感(我不知道 AV 的功能和“责备”防病毒软件似乎不是为用户提供的合理回应),所以我不得不质疑我的网络部署-apis 在我的代码中。
我的音频访问使用本机网络 API:AudioContext、Navigator、MediaDevices、MediaRecorder。关键代码行如下:
因为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