Для работы с камерами и микрофонами, а также для проверки их доступности, есть вспомогательные методы в SDK.browser. Некоторые из этих методов можно использовать до инициализации SDK, но большинство будут работать только после SDK.init.

Некоторые методы с примерами использования:

// Возвращает все подключенные камеры/микрофоны
SDK.browser.getCameras();
SDK.browser.getMicrophones();

// Возвращает тип используемой камеры на мобильном устройстве (передняя или задняя)
SDK.browser.getVideoFacingMode();

// Есть ли у пользователя камера или микрофон
SDK.browser.hasCamera();
SDK.browser.hasMicrophone();

// Возвращает сохраненное устройство пользователя, если оно доступно
SDK.browser.getSavedCamera();
SDK.browser.getSavedMicrophone();

// Проверяет получен ли доступ к устройству
SDK.browser.hasCameraPermission();
SDK.browser.hasMicrophonePermission();

// Проверяет получены ли разрешения, необходимые для текущего звонка
SDK.browser.hasPermissions();

// Запрашивает камеру и/или микрофон пользователя
// Важно! Если в интерфейсе звонка нужно получить стрим с камеры или микрофона
// используйте эти методы вместо нативного navigator.mediaDevices.getUserMedia()
SDK.browser.getUserMedia();
SDK.browser.getUserVideo();
SDK.browser.getUserAudio();

// Проверяет поддержку WebRTC браузером
// Можно ничего не делать, если этот метод вернул false
SDK.browser.isBrowserSupported();

// Проверяет поддержку трансляции экрана браузером
// Не рисуем в интерфейсе возможность трансляции экрана, если метод вернул false
SDK.browser.isScreenCapturingSupported();

// Мобильный браузер или нет
// Переключение камер для мобильных устройств должно быть реализовано иначе
SDK.browser.isMobile();

Переключение устройств:

// Получаем список камер
const cameras = SDK.browser.getCameras();

// Меняем активную камеру
SDK.changeDevice('videoinput', cameras[0].deviceId);

// Для мобильных устройств нет смысла переключать камеры по списку
// лучше сделать интерфейс с перключением передней/задней камеры
if (SDK.browser.isMobile() && cameras.length > 1) {
SDK.changeDevice('videoinput', FacingMode.ENVIRONMENT);
}