Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Захват СМИ и ограничения

Медиа-часть WebRTC описывает, как получить доступ к оборудованию, способному захватывать видео и аудио, например, к камерам и микрофонам, а также как работают медиапотоки. Он также охватывает отображение мультимедиа, как приложение может делать снимки экрана.

Медиа устройства

Все камеры и микрофоны, поддерживаемые браузером, доступны и управляются через объект navigator.mediaDevices . Приложения могут извлекать текущий список подключенных устройств, а также прослушивать изменения, поскольку многие камеры и микрофоны подключаются через USB и могут подключаться и отключаться в течение жизненного цикла приложения. Поскольку состояние мультимедийного устройства может измениться в любое время, рекомендуется, чтобы приложения регистрировали изменения устройства, чтобы правильно обрабатывать изменения.

Ограничения

При доступе к мультимедийным устройствам рекомендуется предоставлять максимально подробные ограничения. Несмотря на то, что можно открыть камеру и микрофон по умолчанию с простым ограничением, он может доставить поток мультимедиа, который далеко не самый оптимальный для приложения.

Конкретные ограничения определены в объекте MediaTrackConstraint , один для аудио и один для видео. Атрибуты в этом объекте имеют тип ConstraintLong , ConstraintBoolean , ConstraintDouble или ConstraintDOMString . Это может быть конкретное значение (например, число, логическое значение или строка), диапазон ( LongRange или DoubleRange с минимальным и максимальным значением) или объект с ideal или exact определением. Для определенного значения браузер попытается выбрать что-то максимально близкое. Для диапазона будет использовано лучшее значение в этом диапазоне. Если указано exact , будут возвращены только те медиапотоки, которые точно соответствуют этому ограничению.

Возле

 // Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}
 

Ассортимент

 // Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}
 

точная

 // Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}
 

Чтобы определить фактическую конфигурацию определенной дорожки медиа-потока, мы можем вызвать MediaStreamTrack.getSettings() которая возвращает MediaTrackSettings примененный в настоящее время.

Также возможно обновить ограничения дорожки с устройства мультимедиа, которое мы открыли, вызвав applyConstraints() на дорожке. Это позволяет приложению переконфигурировать мультимедийное устройство без необходимости сначала закрывать существующий поток.

Дисплей медиа

Приложение, которое хочет иметь возможность захвата и записи экрана, должно использовать Display Media API. Функция getDisplayMedia() (которая является частью navigator.mediaDevices аналогична getUserMedia() и используется с целью открытия содержимого дисплея (или его части, например окна). MediaStream работает так же, как при использовании getUserMedia() .

Ограничения для getDisplayMedia() отличаются от тех, которые используются для обычного видео или аудио ввода.

 {
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}
 

Приведенный выше фрагмент кода показывает, как работают специальные ограничения для записи экрана. Обратите внимание, что они могут поддерживаться не всеми браузерами с поддержкой отображения мультимедиа.

Потоки и треки

MediaStream представляет поток медиа-контента, который состоит из дорожек ( MediaStreamTrack ) аудио и видео. Вы можете извлечь все дорожки из MediaStream , вызвав MediaStream.getTracks() , который возвращает массив объектов MediaStreamTrack .

MediaStreamTrack

MediaStreamTrack имеет kind свойство , которое является либо audio или video , что указывает на тип носителя он представляет. Каждый трек можно отключить, переключив его свойство enabled . У дорожки есть логическое свойство remote которое указывает, RTCPeerConnection ли оно из RTCPeerConnection и поступает ли от удаленного RTCPeerConnection .