问题标签 [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 投票
1 回答
281 浏览

javascript - MediaDevices 视频调整大小事件

navigator.mediaDevices.getUserMedia用于显示用户视频流,并且需要在窗口调整大小事件上更新视频大小。有没有办法在启动后更新该流的宽度/高度约束,以使视频不会被拉伸?

我的初始化代码如下所示:

0 投票
1 回答
1441 浏览

javascript - 与其他浏览器相比,为什么 ios Safari 上的“mediaDevices.getUserMedia”慢?

我正在开发一个记录用户语音输入的网络应用程序。出于某种原因,在 ios safari 上需要很长时间才能通过 mediaDevices.getUsearMedia 获取用于录制的媒体流。我创建了以下测试页面来测量不同浏览器之间的时间延迟。如果有人能对此有所了解,我将不胜感激。

IOS Safari - 600 到 800 毫秒

Chrome 桌面 - 4 毫秒

Chrome Android - 40 到 60 毫秒

0 投票
1 回答
1198 浏览

javascript - Javascript navigator.mediaDevices.getUserMedia 将源移动到前面

我正在使用此代码,但是当它获取源代码时,它总是将该窗口移到前面,这有点烦人,但是我在此代码中看不到任何使其移到前面的选项,因此不确定如何防止它。

它将源移动到前面,在我的应用程序前面,并将焦点放在那个窗口而不是我的应用程序上,所以每次我得到源代码时,我都必须再次点击我的应用程序。

编辑:为避免任何混淆,这是来自 Desktop Capturer 应用程序的代码https://github.com/hokein/electron-sample-apps/tree/master/desktop-capture

0 投票
1 回答
745 浏览

javascript - Javascript navigator.mediaDevices.getUserMedia 在源代码处获取宽度和高度

我正在使用此代码,但是当它获取源时,高度和宽度由下面代码块中的约束设置,但我想获得视频的实际大小。

生成的捕获图像当然是 990x770,但这会导致图像周围有黑色边框。真实视频的来源是 995x744,但由于给定的约束,它得到了这个带有黑色边框的新尺寸。如果我没有设置任何约束,则会抛出一个错误,说宽度为 0,因此需要设置某种宽度。

即使手动将 995x744 的视频源大小输入到约束中也不起作用,因为它似乎需要比源更大的区域来捕获它。不知道为什么不能完全按原样捕获?也许还有其他我做错的事情可以解决这个问题?

如何在捕获视频时获取视频的大小,以便将约束设置为视频的实际大小?所以捕获的图像与源视频的大小完全相同,没有黑色边框等。

0 投票
1 回答
248 浏览

javascript - 如何解决未捕获(承诺),无法在网络摄像头媒体设备上设置属性“innerHTML”为空

我正在研究“ mediaDevices”以尝试使用 javascript 捕获网络摄像头。下面是我的代码。

我已经在 google chrome 中启用了网络摄像头设置,但我有 ' Cannot set property 'innerHTML' of null' 代替。我是javascript新手,任何建议或指导将不胜感激,谢谢。

0 投票
0 回答
409 浏览

android - 如何使用 mediaDevices.enumerateDevices 获取标签

我正在使用 Angular7 和 cordova 在 ionic 4 应用程序中列出我的手机设备。打电话navigator.mediaDevices.enumerateDevices()我得到了所有的音频输入视频输入,但标签是空的。我知道当授予音频和视频权限并且我这样做时,我必须调用此方法。

通过 Android 浏览器连接到 webrtc 示例可以工作,但不能通过 Android WebView。

0 投票
1 回答
1788 浏览

javascript - navigator.mediaDevices.getUserMedia 错误“DOMException”

已授予麦克风权限。

当我尝试运行此代码时,我收到错误“DOMException”,没有任何详细说明await navigator.mediaDevices.getUserMedia({audio: true})

即使在控制台中,当我运行此代码时,我也会navigator.mediaDevices.getUserMedia({audio:true}) .then(stream => video.srcObject = stream) .catch(e => console.error(e)); 收到错误“DOMException”。

为什么会发生这种情况,我需要做什么?

Js、Vue.js、Chrome、MacOS Mojave。

控制台中的示例

0 投票
2 回答
2996 浏览

node.js - 如何将我的 cam 流保存在我的服务器实时节点 js 中?

如何在我的节点 js 服务器中实时保存转换为 blob 的流块

客户端.js | 我是我的 cam 流作为我的节点 js 服务器的二进制文件

服务器.js

如何在视频录制完成结束时将传入的 blob 或二进制文件存储到一个视频文件中。

0 投票
1 回答
1712 浏览

javascript - WebRTC - 可以获得指定的媒体设备信息 - 例如扬声器

我想通过我网站上的扬声器播放指定的声音。我已经通过 mediaDevices.getUserMedia 获得了所有用户设备,就像在这个演示https://webrtc.github.io/samples/src/content/devices/input-output/中一样。

关键是获取扬声器而不是耳机等。 DeviceInfo 对象有 4 个属性:

deviceId - 一些 GUID

组 ID - 其他一些 GUID

kind - 由“audiooutput”过滤

标签 - 名称

有没有机会 100% 确定我们有演讲者?

我已经过滤忽略默认值:

0 投票
0 回答
1002 浏览

bluetooth - 为什么配对新蓝牙设备时不会触发 MediaDevices.ondevicechange 事件?

我一直在开发一个电话会议网络应用程序,我正在使用 media-stream-api。当有人插入他们的 USB 摄像头时,navigator.mediaDevices.ondevicechange会触发但不会触发蓝牙设备。

所以当我使用 USB 设备时,以下代码对我有用。

navigator.mediaDevices.addEventListener('devicechange', this.getDeviceList);

有人可以解释为什么上述事件侦听器不会为蓝牙设备触发吗?