Почему mediaDevices.enumerateDevices перечисляет некоторые устройства дважды?Что по умолчанию? - PullRequest
0 голосов
/ 14 ноября 2018

Я пишу этот код на JavaScript в Chrome:

navigator.mediaDevices.enumerateDevices()
  .then((list) => {
    console.log(list);
  });

Это выводит список медиа-устройств, таких как микрофоны и камеры.Каждое устройство представлено как объект со своим deviceId.Но некоторые устройства, например, один из микрофонов, перечислены дважды.И один раз их соответствующие deviceId устанавливаются на 'default'.Что такого особенного в одном микрофоне по умолчанию?И как мне узнать, какой фактический deviceId он имеет?

1 Ответ

0 голосов
/ 15 ноября 2018

A deviceId позволяет веб-сайтам управлять тем, какое устройство использует их пользователь.Например, сохраните его в файле cookie, чтобы запомнить предпочтения пользователя с прошлого раза.

Некоторые браузеры (Chrome, Opera) отображают один и тот же микрофон дважды с разными идентификаторами.В моем случае:

  1. По умолчанию - Внутренний микрофон (встроенный)
  2. Внутренний микрофон (встроенный)

Первый - это «ОС»default ", независимо от того, что конечный пользователь настроил в Системные настройки / Звук (OSX) или Панель управления / Звук (Windows).Идея такова: при вызове из файла cookie и использовании его идентификатор дает вам все, что настроено в ОС во время использования , что может отличаться от прошлого раза.

Последнеевсегда конкретный микрофон.Их groupId с матча;это одно и то же физическое устройство.

deviceId = "default" - это странность Chrome (и Opera).AFAICT это действительный идентификатор, как и любой другой.Если вы хотите другой, сравните их groupId s, чтобы найти его.

Safari не делает этого.Firefox недавно прекратил это делать (начиная с версии 63).

Камеры никогда не дублируются таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...