safari 13.1 navigator.mediaDevices.enumerateDevices () возвращает только аудиоустройства - PullRequest
0 голосов
/ 06 мая 2020

Я столкнулся с проблемой на настольной версии Safari 13.1. Если я открою консоль в веб-инспекторе (с обычным MacBook с веб-камерой и mi c) и выполню эту команду на любом веб-сайте:

navigator.mediaDevices.enumerateDevices()

Первый раз он вернет результат Promise с видеовходом и аудиовходом. Второй раз вернет только 2 аудиовхода. Видеовход пропадает.

К сожалению, я вызываю этот метод несколько раз, проверяя доступные устройства в моем решении.

Есть идеи, почему это происходит и как я могу получить точную информацию даже об устройствах. Если я позвоню более одного раза? Смотрите результаты здесь

1 Ответ

1 голос
/ 27 мая 2020

Я обнаружил ту же проблему, также на моем iPad, работающем под управлением iOS 13.

Кажется, вам нужно сначала запросить доступ к камере, чтобы увидеть правильный список устройств.

navigator.mediaDevices.getUserMedia({ video: true })

Это предложит вам доступ к камере (вы должны быть на HTTPS или локальном хосте).

Предоставьте разрешение, затем запустите это снова, и вы должны увидеть videoinput устройства, перечисленные в возвращенном обещании:

navigator.mediaDevices.enumerateDevices()

Я думаю, это имеет смысл как функция конфиденциальности, которая веб-сайт не может проверить, существует ли камера без вашего разрешения.

...