Для работы с камерами и микрофонами, а также для проверки их доступности, есть вспомогательные методы в 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);
}