- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定 MediaStream
,有没有办法检测哪个设备(相机、麦克风)处于事件状态?实例?
我目前正在开发的应用程序只是简单地查询这样的流并将其附加到 <video/>
元素:
const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true })
const el = document.querySelector("video")
el.srcObject = stream
console.log(stream.getTracks())
// MediaStreamTrack { kind: "audio", id: "{000d071e-f936-42d8-872e-a568cd96cc2d}", label: "USB Audio Device Mono", … }
// MediaStreamTrack { kind: "video", id: "{186427d5-b04a-4906-9177-1a088c5d4e0a}", label: "C922 Pro Stream Webcam", …
下一步是让用户能够更改摄像头/麦克风。基本代码是:
const devices = await navigator.mediaDevices.enumerateDevices()
console.log(devices)
// MediaDeviceInfo { deviceId: "yQx5+MN7znbmkE0tV98jJHpvqrUaa6Gv5WIXF52jj0s=", kind: "videoinput", label: "C922 Pro Stream Webcam", … }
// MediaDeviceInfo { deviceId: "dIjwtaOGQbjT2HOqfJ4xjzjXBwBxz4CEeX3a2fn0ZgA=", kind: "audioinput", label: "USB Audio Device Mono", … }
// MediaDeviceInfo { deviceId: "/t3u7BlfExATtBC4CUmyqIo8RORDxMu9aMrJJHN0Ez0=", kind: "audioinput", label: "C922 Pro Stream Webcam Analog Stereo", … }
// MediaDeviceInfo { deviceId: "/5pqK1599b+mKHm26zCYQ+Ql3vG0Em7xiVbqfm1C/9A=", kind: "audioinput", label: "Monitor of Built-in Audio Digital Stereo (IEC958)", … }
// MediaDeviceInfo { deviceId: "Tib/PVScFuFUQuAtYYVgtxcxeu08opGKe9MXEVmxq84=", kind: "audioinput", label: "Monitor of USB Audio Device Analog Stereo", … }
我可以简单地将这个列表转换为
<select/>
+
<option/>
列表(每个
kind
一个),让用户决定并重新请求所选
deviceId
的流(
getUserMedia({ audio: { deviceId: selectedDeviceId } })
)。
<option/>
应该预选吗?查看 MDN,stream 的 track ID 是
generated by the browser (这是有道理的),但是
MediaStream
API没有提供太多选择...
最佳答案
你可以得到MediaTrackSettings当前应用于您的 MediaStreamTracks 并检查 deviceId
从那里:
const used_devices = mediastream.getTracks()
.map( (track) => track.getSettings().deviceId );
关于javascript - getUserMedia : how to find the active devices? 后的 enumerateDevices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66048083/
我正在使用 enumerateDevices ( See reference here ) 获取用户的摄像头和麦克风列表。 此代码在 Chrome 上运行良好: $(document).ready(f
背景 我尝试实现此功能的机器包含多个摄像头,我想在代码中选择摄像头。 (所有机器具有相同的硬件) 问题 我试图在请求视频访问之前实现自定义功能,其中我手动设置应该使用哪个设备来防止选择错误的摄像机,但
我目前有一个连续轮询 MediaDevices.enumerateDevices() 的方法,它会返回一组已连接的媒体设备。 let devices = []; function getDevices
问题: 是什么导致了以下错误,我该如何解决? 我找到了这个,但看不懂日文: https://bisyokuden.com/archives/433 可能与 webkit 有关。 https://git
即使我的设备没有连接麦克风,我也想进行 WebRTC 通话并听到声音。我用来加入 VOIP 通话的网络应用程序检测到我没有麦克风,并关闭了音频,因为它假定我想要呼入。 我注意到网络应用程序正在使用 n
我在 Chrome 中用 JavaScript 编写了这段代码: navigator.mediaDevices.enumerateDevices() .then((list) => { c
在 Firefox 和 Chrome 上, navigator.mediaDevices.enumerateDevices() ...返回所有连接的音频和视频设备的列表。 但是在桌面 Safari 上
我正在研究媒体控制功能。我正在显示要从下拉列表中选择的设备名称,它在 chrome 上运行良好,但在 Firefox 上它不会获取标签或设备名称。 最佳答案 navigator.mediaDevice
给定 MediaStream,有没有办法检测哪个设备(相机、麦克风)处于事件状态?实例? 我目前正在开发的应用程序只是简单地查询这样的流并将其附加到 元素: const stream = await
我对 JavaScript 的序列有疑问。让我先向您展示我的代码: 这是我的 HTML: Snap Photo 这是我的 JavaScript: var Id; //List cameras
我尝试在 iOS Safari (13.2.3) 上录制音频,但 Safari 不提供对麦克风的访问。当我调用navigator.mediaDevices.enumerateDevices时,它只返回
参见相关问题:Navigator.mediaDevices.getUserMedia not working on iOS 12 Safari 我们正在尝试从用户输入的用户 MediaDevices.
我是一名优秀的程序员,十分优秀!