Выбор камеры на мобильных устройствах¶
Метод Web SDK Flashphoner.getMediaDevices() позволяет получить список камер и микрофонов для переключения между ними. Метод использует navigator.mediaDevices.enumerateDevices(), и обычно этого достаточно для того, чтобы получить список всех доступных устройств ввода. Однако в этом случае нет различий между фронтальной и тыловой камерами мобильного устройства: необходимо разобрать метку (наименование) камеры, чтобы определить, что это за камера. К сожалению, в iOS Safari метки камер локализованы в соответствии с текущим языком системы, поэтому их разбор затруднителен.
Для решения этой проблемы в сборке Web SDK 2.0.274 добавлен новый метод Flashphoner.getMobileDevices(). Чтобы верно определить фронтальную и тыловую камеру, метод использует параметр facingMode в вызове navigator.mediaDevices.getUserMedia():
if(Browser.isAndroid() || Browser.isiOS()) {
...
if (Browser.isFirefox()) {
// Use camera selection by name in mobile Firefox browser
...
} else {
// Use camera selection by facingMode constraint on mobile devices in Chrome and Safari
Flashphoner.getMobileDevices(null, MEDIA_DEVICE_KIND.INPUT).then((list) => {
setSwitchableControls(list.video, "videoInput", "sendVideo");
setSwitchableControls(list.audio, "audioInput", "sendAudio");
switchCamEnabled = false;
}).catch(function (error) {
$("#notifyFlash").text("Failed to get media devices: " + error.message);
});
}
} else {
// List all the connected devices on desktop
Flashphoner.getMediaDevices(null, true).then(function (list) {
setSwitchableControls(list.video, "videoInput", "sendVideo");
setSwitchableControls(list.audio, "audioInput", "sendAudio");
}).catch(function (error) {
$("#notifyFlash").text("Failed to get media devices: " + error.message);
});
}
Известные проблемы¶
-
Метод
Flashphoner.getMobileDevices()не работает в мобильном браузере Firefox. В этом случае используйте методFlashphoner.getMediaDevices(). -
Метод
Flashphoner.getMobileDevices()возвращает список видео устройств, содержащий одну фронтальную и одну тыловую камеры. Используйте идентификаторы только из этого списка для переключения между камерами.