MediaStream
===========

Интерфейс **`MediaStream`** представляет поток медиа данных. Поток состоит из нескольких **треков**, таких как видео и аудио треки. Каждый трек является экземпляром `MediaStreamTrack`. MediaStream можно получить либо с помощью конструктора, либо вызовом `MediaDevices.getUserMedia()`.

Некоторые агенты предоставляют подклассы, чтобы привести более точную информацию или расширить функциональность, например `CanvasCaptureMediaStream` (en-US).

Конструктор
-----------

`MediaStream()` (en-US)

Создаёт и возвращает новый объект MediaStream. Можно создать пустой поток, поток, основанный на существующем или содержащий указанный список треков (массив объектов `MediaStreamTrack`).

Свойства
--------

*Этот интерфейс наследует свойства своего родителя,* *`EventTarget`.*

`MediaStream.active` Только для чтения 

Возвращает `true`, если `MediaStream` активен, иначе `false`.

`MediaStream.ended` Только для чтения 

Возвращает `true`, если достигнут конец потока. Это свойство удалено из спецификации; следует проверять свойство `MediaStreamTrack.readyState` (en-US), которое имеет значение `"ended"` у завершённых треков.


`MediaStream.id` (en-US) Только для чтения 

Объект `DOMString`, содержащий 36 символов универсального уникального идентификатора (UUID) потока.

### Обработчики событий

`MediaStream.onaddtrack` (en-US)

Объект `event handler`, содержащий действие, которое должно выполняться, когда случается событие `addtrack` при добавлении нового объекта `MediaStreamTrack`.

`MediaStream.onremovetrack` (en-US)

Объект `event handler`, содержащий действие, которое должно выполняться, когда случается событие `removetrack` при удалении объекта `MediaStreamTrack`.

Методы
------

*Этот интерфейс наследует методы своего родителя,* *`EventTarget`.*

`MediaStream.addTrack()` (en-US)

Сохраняет копию данного объекта `MediaStreamTrack`. Если данный трек добавлялся в `MediaStream` ранее, ничего не происходит.


`MediaStream.clone()` (en-US)

Возвращает точную копию объекта `MediaStream`. Исключение составляет значение `id` (en-US), которое изменится на новое уникальное.


`MediaStream.getAudioTracks()` (en-US)

Возвращает список объектов `MediaStreamTrack`, хранимых в объекте `MediaStream` с атрибутом `kind` имеющим значение `"audio"`. Порядок не определён и может меняться между браузерами, а также между вызовами.


`MediaStream.getTrackById()` (en-US)

Возвращает трек с `trackid` соответствующем данному. Если в метод не передано аргументов или трека с данным ID нет, возвращает `null`. Если несколько треков имеют одинаковый ID, возвращает первый из них.

`MediaStream.getTracks()` (en-US)

Возвращает список всех объектов `MediaStreamTrack`, сохранённых в объекте `MediaStream`, вне зависимости от значения их свойства `kind`. Порядок не определён и может меняться между браузерами, а также между вызовами.


`MediaStream.getVideoTracks()` (en-US)

Возвращает список объектов `MediaStreamTrack`, хранимых в объекте `MediaStream` с атрибутом `kind` имеющим значение `"video"`. Порядок не определён и может меняться между браузерами, а также между вызовами.


`MediaStream.removeTrack()` (en-US)

Удаляет данный объект `MediaStreamTrack`. Если данный трек не сохранён в объекте `MediaStream`, ничего не происходит.

События
-------

`addtrack` (en-US)

 Вызывается при добавлении нового объекта `MediaStreamTrack`.
 Также доступно как свойство `onaddtrack` (en-US).


`removetrack` (en-US)

 Вызывается при удалении объекта `MediaStreamTrack`.
 Также доступно как свойство `onremovetrack` (en-US).


Спецификации
------------

| Specification |
| --- |
| Media Capture and Streams # mediastream |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Использование интерфейса MediaStream
* WebRTC API
* Web Audio API
* `MediaStreamTrack`