javascript - Android 移动浏览器 - navigator.mediaDevices.enumerateDevices 方法返回交换的音频输入和输出设备值
问题描述
我正在使用导航器功能 -navigator.mediaDevices.enumerateDevices()
在我的移动浏览器应用程序中获取媒体设备列表。我正在使用以下代码:
navigator.mediaDevices.enumerateDevices().then(function(devices) {
console.log("devices", devices);
});
我将音频输入和音频输出设备对象值交换如下:
[
{
"deviceId": "default",
"kind": "audioinput",
"label": "Default",
"groupId": "41a111f571a1171ca91c5428d2ad8806a66bb6d7c5812f779161151a706641a1"
},
{
"deviceId": "bbf2c347dbfc70b9e37b16be622c4973a74269c7f53d4162adab0c09614514d1",
"kind": "audioinput",
"label": "Speakerphone",
"groupId": "e8dc20cc0a8dd33f65085c2f06bb8424105eb230c54237c343b8f8ff960559f3"
},
{
"deviceId": "704cd1e8449390f5bb3fd1615a7637753f4ad019d4e6bb3f7c36690f58f2536d",
"kind": "audioinput",
"label": "Headset earpiece",
"groupId": "1f2f370cbbe3f57fe3a8e901dc8f82c8d751f690520c261b293b1480e7959218"
},
{
"deviceId": "38f008a97b8fd5ff8d367c336fcb7120fdc499375fb44459980d60395516b955",
"kind": "videoinput",
"label": "camera2 1, facing front",
"groupId": "3b073bb17b0c56c5f8e6f143d6eeebcbfac5ec2ebc8ff2bc852f66745a63c591"
},
{
"deviceId": "bbf2c347dbfc70b9e37b16be622c4973a74269c7f53d4162adab0c09614514d1",
"kind": "videoinput",
"label": "camera2 0, facing back",
"groupId": "5a8b08633d9b089d234fc7bb0d67fae394e90a4f7948128562251d17408d99d4"
},
{
"deviceId": "default",
"kind": "audiooutput",
"label": "Default",
"groupId": "default"
}
]
我已经在其他三个 android 移动浏览器中尝试过这个,它也在交换这些设备中的值。在PC上它工作正常。为什么它在移动浏览器中交换这些值?
另外,我检查了这个网页以验证 - webrtc 输入输出设备,这里它在音频输入设备列表中显示扬声器,如下面的屏幕截图所示。
解决方案
推荐阅读
- c# - 如何使用多个条件(可能为空)从数据库中优雅地选择行?
- r - 如何动态地将变量的未引用名称(而不是其值)传递给函数?
- javascript - 渲染器优于原生元素方法?
- python - Pandas 根据包含匹配替换值
- python-3.x - 执行创建数组和图形的python脚本的内存问题
- sql - 在 SQL 中动态生成查询
- python - writer.writeheader() - 无法识别传入标题的字典字段
- rx-java2 - 为什么我会收到 NetworkOnMainThreadException?
- c# - 将 ManualResetEvent 与异步代码一起使用是错误的吗?
- angular - 使用 ngx-socket-io 打开套接字不起作用