Spec-Zone.ru › Web APIs

API захвата медиа и потоков (Media Stream)

API захвата медиа и потоков, часто называемый API потоков медиа или MediaStream API, это API, связанный с WebRTC, который предоставляет поддержку потоковой передачи аудио- и видеоданных.

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

Концепции и использование

API основан на манипулировании объектом MediaStream, представляющим поток аудио- или видеоданных. См. пример в Получение потока медиа.

Объект MediaStream состоит из нуля или более объектов MediaStreamTrack, представляющих различные аудио- или видеотреки. Каждый MediaStreamTrack может иметь один или более каналов. Канал представляет собой наименьшую единицу потока медиа, такую как аудиосигнал, связанный с определённым динамиком, например, левый или правый в стерео аудиотреке.

Объекты MediaStream имеют один вход и один выход. Объект MediaStream, сгенерированный getUserMedia(), называется локальным и имеет в качестве входного источника одну из камер или микрофонов пользователя. Нелокальный MediaStream может представлять медиаэлемент, такой как <video> или <audio>, поток, поступающий по сети и полученный через API WebRTC RTCPeerConnection, или поток, созданный с помощью API Web Audio API MediaStreamAudioDestinationNode.

Выход объекта MediaStream связан с потребителем. Это может быть медиаэлемент, такой как <audio> или <video>, API WebRTC RTCPeerConnection или Web Audio API MediaStreamAudioSourceNode.

Интерфейсы

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

  • CanvasCaptureMediaStreamTrack
  • InputDeviceInfo
  • MediaDeviceInfo
  • MediaDevices
  • MediaStream
  • MediaStreamTrack
  • MediaStreamTrackEvent
  • MediaTrackConstraints
  • MediaTrackSettings
  • MediaTrackSupportedConstraints
  • OverconstrainedError

События

  • addtrack
  • ended
  • mute
  • removetrack
  • unmute

Руководства и учебные пособия

В статье Возможности, ограничения и настройки рассматриваются понятия ограничений и возможностей, а также настройки медиа, и включает в себя Диспетчер ограничений, который позволяет экспериментировать с результатами различных наборов ограничений, применяемых к аудио- и видеотрекам, поступающим с устройств ввода A/V компьютера (таких как веб-камера и микрофон).

Статья Получение статических снимков с помощью getUserMedia() демонстрирует, как использовать getUserMedia() для доступа к камере на компьютере или мобильном телефоне с поддержкой getUserMedia() и создания снимка с её помощью.

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Media_Capture_and_Streams_API 51 79 Нет 38 11 51 Нет 41 11 5.0 51
canvas 51 79 Нет 38 11 51 Нет 41 11 5.0 51
requestFrame 51 79 Нет 38 11 51 Нет 41 11 5.0 51
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Media_Capture_and_Streams_API 47 79 39 34 11 47 39 34 11 5.0 47
getCapabilities 67 79 Нет 54 17 67 Нет 48 17 9.0 67
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Media_Capture_and_Streams_API 47 12 39 34 11 47 39 34 11 5.0 47
deviceId 47 12 39 34 11 47 39 34 11 5.0 47
groupId 47 12
39До Firefox 67, связанные устройства фактически не группировались по groupId.
34 11 47
39До Firefox для Android 67, связанные устройства фактически не группировались по groupId.
34 11 5.0 47
kind 47 12 39 34 11 47 39 34 11 5.0 47
label 47 12 39 34 11 47 39 34 11 5.0 47
toJSON 47 18 42 34 11 47 42 34 11 5.0 47
END_OF_DOCUMENT_MARKER
Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Media_Capture_and_Streams_API 47 12 33 30 11 47 36 30 11 5.0 47
devicechange_event 57 12 52 34 11 Нет 52 Нет 11 Нет Нет
enumerateDevices 47 12
116enumerateDevices() перечисляет как устройства ввода, так и вывода. Ранее возвращались только устройства ввода.
39enumerateDevices() возвращает только устройства ввода.
34 11 47
116enumerateDevices() перечисляет как устройства ввода, так и вывода. Ранее возвращались только устройства ввода.
39enumerateDevices() возвращает только устройства ввода.
34 11 5.0 47
getDisplayMedia 72 79
17–79Доступно как член Navigator вместо MediaDevices.
66
33–66Начиная с Firefox 33, вы можете захватывать данные экрана с помощью getUserMedia() с ограничением video под названием mediaSource. До версии 52 использовался настраиваемый клиентом список разрешенных сайтов.
60 13
НетВ Chrome Android с 72 по 88 этот метод был доступен, но всегда завершался ошибкой NotAllowedError. См. баг 40418135.
НетВ Firefox Android с 66 по 79 этот метод был доступен, но всегда завершался ошибкой NotAllowedError.
НетВ Opera Android с 51 по 88 этот метод был доступен, но всегда завершался ошибкой NotAllowedError. См. баг 40418135.
Нет
НетВ Samsung Internet с 11.0 по 88 этот метод был доступен, но всегда завершался ошибкой NotAllowedError. См. баг 40418135.
НетВ WebView Android с 72 по 88 этот метод был доступен, но всегда завершался ошибкой NotAllowedError. См. баг 40418135.
getSupportedConstraints 53 12 44 40 11 52 50 41 11 6.0 53
getUserMedia
53Если вам нужна эта возможность до версии 53, обратитесь к navigator.webkitGetUserMedia, префиксной форме устаревшего navigator.getUserMedia API.
12
36["Если вам нужна эта возможность до версии 36, обратитесь к navigator.mozGetUserMedia, префиксной форме устаревшего navigator.getUserMedia API.", "До Firefox 55 getUserMedia() неверно возвращал NotSupportedError, когда список ограничений пуст или все ограничения установлены на false. Начиная с Firefox 55, в этой ситуации теперь корректно вызывается обработчик ошибок с TypeError.", "При использовании специфичного для Firefox ограничения video под названием mediaSource для запроса захвата экрана, Firefox 66 и более поздние версии учитывают значения screen и window для отображения как списка экранов, так и окон.", "Начиная с Firefox 66, getUserMedia() больше нельзя использовать в защищенных <iframe> или data URL, введенных пользователем в адресной строке."]
40Если вам нужна эта возможность до версии 40, обратитесь к navigator.webkitGetUserMedia, префиксной форме устаревшего navigator.getUserMedia API.
11
53Если вам нужна эта возможность до версии 53, обратитесь к navigator.webkitGetUserMedia, префиксной форме устаревшего navigator.getUserMedia API.
36["Если вам нужна эта возможность до версии 36, обратитесь к navigator.mozGetUserMedia, префиксной форме устаревшего navigator.getUserMedia API.", "До Firefox для Android 55 getUserMedia() неверно возвращал NotSupportedError, когда список ограничений пуст или все ограничения установлены на false. Начиная с Firefox для Android 55, в этой ситуации теперь корректно вызывается обработчик ошибок с TypeError.", "При использовании специфичного для Firefox для Android ограничения video под названием mediaSource для запроса захвата экрана, Firefox для Android 66 и более поздние версии учитывают значения screen и window для отображения как списка экранов, так и окон.", "Начиная с Firefox для Android 66, getUserMedia() больше нельзя использовать в защищенных <iframe> или data URL, введенных пользователем в адресной строке."]
41Если вам нужна эта возможность до версии 41, обратитесь к navigator.webkitGetUserMedia, префиксной форме устаревшего navigator.getUserMedia API.
11 6.0 53
selectAudioOutput Нет Нет 116 Нет Нет Нет Нет Нет Нет Нет Нет
setCaptureHandleConfig 102 102 Нет 88 Нет Нет Нет Нет Нет Нет Нет
Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android
Media_Capture_and_Streams_API 26 12 22 15 11 26 22 14 11 1.5 4.4
applyConstraints 59 12 43 46 11 59 43 43 11 7.0 59
capturehandlechange_event 102 102 Нет 88 Нет Нет Нет Нет Нет Нет Нет
clone 35 12 48 22 11 35 48 22 11 3.0 37
contentHint 70 79 Нет 57 12.1 70 Нет 49 12.2 10.0 70
enabled 26 12 24 15 11 26 24 14 11 1.5 4.4
ended_event 26 12 50 15 11 26 50 14 11 1.5 4.4
getCapabilities 59 12 132 46 11 59 132 43 11 7.0 59
getCaptureHandle 102 102 Нет 88 Нет Нет Нет Нет Нет Нет Нет
getConstraints 53 12 50 40 11 52 50 41 11 6.0 53
getSettings 59 12 50 46 11 59 50 43 11 7.0 59
id 26 12 22 15 11 26 22 14 11 1.5 4.4
kind 26 12 22 15 11 26 22 14 11 1.5 4.4
label 26 12 22 15 11 26 22 14 11 1.5 4.4
mute_event 26 12 59 15 11 26 59 14 11 1.5 4.4
muted 38 12
59В настоящее время не отслеживает состояние отключения микрофона из операционной системы, см. ошибка 1739163.
25 11 38
59В настоящее время не отслеживает состояние отключения микрофона из операционной системы, см. ошибка 1739163.
25 11 3.0 38
readyState 26 12 50 15 11 26 50 14 11 1.5 4.4
stop 32 12 34 19 11 32 34 19 11 2.0 4.4.3
unmute_event 26 12 59 15 11 26 59 14 11 1.5 4.4
Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
MediaStream 5521 1279 44 4215 11 5525 42 4214 11 6.01.5 554.4
Media_Capture_and_Streams_API 5521 1279 15 4215 11 5525 15 4214 11 6.01.5 554.4
active 42 12 52 29 11 42 52 29 11 4.0 42
active_event 42 12 Нет 29 Нет 42 Нет 29 Нет 4.0 42
addTrack 26 12 44 15 11 26 44 14 11 1.5 37
addtrack_event 26 12 50 15 11 26 50 14 11 1.5 4.4
clone 35 12 48 22 11 35 48 22 11 3.0 37
getAudioTracks 26 12
22До Firefox 64, этот метод возвращал массив объектов AudioStreamTrack. Однако, MediaStreamTrack теперь включает функциональность этого интерфейса.
15 11 26
22До Firefox для Android 64, этот метод возвращал массив объектов AudioStreamTrack. Однако, MediaStreamTrack теперь включает функциональность этого интерфейса.
14 11 1.5 37
getTrackById 26 12 49 15 11 26 49 14 11 1.5 37
getTracks 38 12 34 25 11 38 34 25 11 3.0 38
getVideoTracks 26 12
22До Firefox 64, этот метод возвращал массив объектов VideoStreamTrack. Однако, MediaStreamTrack теперь включает функциональность этого интерфейса.
15 11 26
22До Firefox для Android 64, этот метод возвращал массив объектов VideoStreamTrack. Однако, MediaStreamTrack теперь включает функциональность этого интерфейса.
14 11 1.5 37
id 26 12 41 15 11 26 41 14 11 1.5 4.4
inactive_event 42 12 Нет 29 Нет 42 Нет 29 Нет 4.0 42
removeTrack 26 12 44 15 11 26 44 14 11 1.5 37
removetrack_event 26 12 72
59–72До Firefox 72, обработчик событий был доступен, но не работал.
15 11 26 79
59–79До Firefox для Android 79, обработчик событий был доступен, но не работал.
14 11 1.5 4.4

api.MediaStream

Таблицы BCD загружаются только в браузере

api.MediaStreamTrack

Таблицы BCD загружаются только в браузере

api.MediaDevices

Таблицы BCD загружаются только в браузере

api.MediaDeviceInfo

Таблицы BCD загружаются только в браузере

api.InputDeviceInfo

Таблицы BCD загружаются только в браузере

api.CanvasCaptureMediaStreamTrack

Таблицы BCD загружаются только в браузере

См. также

  • WebRTC - вводная страница к API
  • Фотографирование с помощью WebRTC: демонстрация и руководство по использованию getUserMedia().

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Media_Capture_and_Streams_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API