/** * Вспомогательный плагин для работы с WebRTC */ import { IVideoDimentions } from '../types/MediaSettings'; /** * Тип камеры мобильного устройства */ export declare enum FacingMode { /** * Фронтальная камера */ USER = "user", /** * Задняя камера */ ENVIRONMENT = "environment" } /** * Известные браузеры */ export type BrowserName = 'IE' | 'Edge' | 'Chrome' | 'Firefox' | 'Yandex' | 'Opera' | 'Sferum'; declare namespace WebRTCUtils { /** * До вызова этого метода бесполезно опрашивать другие публичные методы. * - Инициализирует устройства. * - Получает версию ОС */ function init(): Promise; /** * Возвращает все подключенные камеры */ function getCameras(): MediaDeviceInfo[]; /** * Возвращает все подключенные микрофоны */ function getMicrophones(): MediaDeviceInfo[]; /** * Возвращает все подключенные динамики */ function getOutput(): MediaDeviceInfo[]; /** * Есть ли у пользователя камера */ function hasCamera(): boolean; /** * Есть ли у пользователя микрофон */ function hasMicrophone(): boolean; /** * Возвращает сохраненную камеру пользователя, если она доступна */ function getSavedCamera(): MediaDeviceInfo | null; /** * Возвращает сохраненный микрофон пользователя, если он доступен */ function getSavedMicrophone(): MediaDeviceInfo | null; /** * Возвращает сохраненное устройство вывода */ function getSavedOutput(): MediaDeviceInfo | null; /** * Возвращает тип используемой камеры (передняя или задняя) */ function getVideoFacingMode(): FacingMode | null; /** * Проверяет получен ли доступ к камере */ function hasCameraPermission(): boolean; /** * Проверяет получен ли доступ к микрофону */ function hasMicrophonePermission(): boolean; function getMicrophonePermissionState(): PermissionState | null; /** * Проверяет получены ли разрешения, необходимые для текущего звонка */ function hasPermissions(needVideo?: boolean): boolean; /** * Запрашивает камеру и микрофон пользователя * * @param needVideo Нужно ли видео * @param needAudio Нужно ли аудио * @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио */ function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean): Promise; /** * Запрашивает трансляцию экрана пользователя с опциональным захватом звука */ function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise; /** * Запрашивает камеру пользователя * * @param deviceId ID устройства * @param resolution Размеры видео */ function getUserVideo(deviceId?: string, resolution?: IVideoDimentions): Promise; /** * Запрашивает микрофон пользователя * * @param deviceId ID устройства */ function getUserAudio(deviceId?: string): Promise; /** * Устанавливает размер видео в стриме * * @param stream * @param resolution */ function setResolution(stream: MediaStream, resolution: IVideoDimentions): Promise; /** * Возвращает фейковый аудио mediaTrack */ function getSilentMediaTrack(): MediaStreamTrack; /** * Возвращает фейковый видео mediaTrack */ function getBlackMediaTrack(width?: number, height?: number): MediaStreamTrack; /** * Проверяет поддержку WebRTC браузером */ function isBrowserSupported(): boolean; /** * Проверяет поддержку шаринга экрана браузером */ function isScreenCapturingSupported(): boolean; /** * В некоторых браузерах H264 decoder сломан */ function isBrokenH264Decoder(): boolean; /** * В некоторых браузерах VP9 encoder сломан * В симулкасте вп9 енкодер ведет себя некорректно */ function isBrokenVP9Encoder(): boolean; /** * В некоторых браузерах VP9 decoder сломан */ function isBrokenVP9Decoder(): boolean; /** * Изменился формат описания датаканала в SDP * @link https://blog.mozilla.org/webrtc/how-to-avoid-data-channel-breaking/ */ function isOldDataChannelDescription(): boolean; /** * Может ли браузер делать H264 приоритетным */ function canPreferH264(): boolean; /** * Некоторые браузеры (Firefox, Safari) некорректно поддерживают симулкаст */ function isSimulcastSupportedByBrowser(): boolean; /** * Имя операционной системы */ function os(): string; /** * Версия операционной системы */ function osVersion(): number | null | undefined; /** * Мобильный браузер или нет */ function isMobile(): boolean; /** * Имя браузера */ function browserName(): BrowserName | string; /** * Версия браузера */ function browserVersion(): string; /** * Если браузер основан на хроме - возвращает версию */ function baseChromeVersion(): number; /** * Возвращает AudioContext */ function getAudioContext(): AudioContext; /** * Возвращает подверсию браузера (если она есть) */ function browserSubVersion(): string; /** * Браузер поддерживает захват звука при трансляции экрана */ function isAudioShareSupported(): boolean; } export default WebRTCUtils;