Определить идентификатор устройства камеры с указанным режимом облицовки - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю над кодом, чтобы позволить элементу select на странице выбрать камеру.Камера по умолчанию должна быть камерой «окружающей среды», а остальные должны быть перечислены после.

С помощью следующего вызова я могу транслировать видео с соответствующей камеры с «средой»:

navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment"} }).then(function (stream) {
    // display stream on web page
    ...
});

Аналогично, я могу получить список доступных устройств, используя следующее:

navigator.mediaDevices.enumerateDevices().then(
    devices => {
        // build list of options
    }
);

Я сохраняю deviceId для каждого параметра и использую его для отображения канала с той камеры, которая работает хорошо.

Однако опция, выбранная по умолчанию, не обязательно является камерой "окружающей среды".И объект потока, возвращаемый из getUserMedia, кажется, не имеет простого способа определить deviceId устройства, предоставляющего этот поток.Также я не могу найти какой-либо другой способ определения камеры, "окружающей среды".

Это невозможно или есть какая-то функция getDeviceIdForFacingMode, которую я только что пропустил?

1 Ответ

0 голосов
/ 26 сентября 2019

Пройдя еще немного по объектам, я в итоге смог обнаружить, что для получения deviceId из потока работает следующее:

stream.getVideoTracks()[0].getSettings().deviceId

Я бы предположил, что в других случаях вам может понадобитьсячтобы быть осторожным с [0], если по какой-то причине ваш поток включал несколько видео дорожек, но для моих целей это работало хорошо.В целом, я ожидаю, что вы можете получить любую необходимую вам информацию от stream.getVideoTracks()[i] ( MediaStreamTrack ) до stream.getVideoTracks()[i].getSettings() ( MediaTrackSettings ).

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