# MediaStream

MediaStream of Media Capture and Streams, which groups tracks.

### *class* webrtc.interfaces.media_stream.MediaStream(tracks=None)

A group of audio and video tracks, played or sent together.

The stream keeps its tracks alive.

See [MDN: MediaStream](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream).

* **Events:**
  **addtrack and removetrack** ([`webrtc.MediaStreamTrackEvent`](../models/events.md#webrtc.models.events.MediaStreamTrackEvent)) – The remote peer added a track to
  a remote stream, or removed one. Changes made with [`add_track()`](#webrtc.interfaces.media_stream.MediaStream.add_track) and [`remove_track()`](#webrtc.interfaces.media_stream.MediaStream.remove_track) fire none.
* **Parameters:**
  **tracks** ([`list`](https://docs.python.org/3/builtins/stdtypes.html#list) of [`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack), optional) – The tracks of the new stream,
  or a stream whose tracks the new stream shares.

### Events

- `addtrack`: [`Event`](../models/events.md#webrtc.models.events.Event)
- `removetrack`: [`Event`](../models/events.md#webrtc.models.events.Event)

Handlers are registered with [`on()`](../events.md#webrtc.utils.events.UniformEventTarget.on).

#### *property* id *: [str](https://docs.python.org/3/builtins/stdtypes.html#str)*

The ID of the stream. A local stream gets a random UUID and a remote one keeps its peer’s ID.

See [MDN: MediaStream/id](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/id).

* **Type:**
  [`str`](https://docs.python.org/3/builtins/stdtypes.html#str)

#### *property* active *: [bool](https://docs.python.org/3/builtins/functions.html#bool)*

Whether a track of the stream hasn’t ended yet.

See [MDN: MediaStream/active](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/active).

* **Type:**
  [`bool`](https://docs.python.org/3/builtins/functions.html#bool)

#### get_audio_tracks()

Returns the audio tracks of the stream, in no defined order.

See [MDN: MediaStream/getAudioTracks](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/getAudioTracks).

* **Returns:**
  [`list`](https://docs.python.org/3/builtins/stdtypes.html#list) of [`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack) – The tracks.
* **Return type:**
  [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[webrtc.MediaStreamTrack](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack)]

#### get_video_tracks()

Returns the video tracks of the stream, in no defined order.

See [MDN: MediaStream/getVideoTracks](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/getVideoTracks).

* **Returns:**
  [`list`](https://docs.python.org/3/builtins/stdtypes.html#list) of [`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack) – The tracks.
* **Return type:**
  [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[webrtc.MediaStreamTrack](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack)]

#### get_tracks()

Returns all the tracks of the stream, in no defined order.

See [MDN: MediaStream/getTracks](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/getTracks).

* **Returns:**
  [`list`](https://docs.python.org/3/builtins/stdtypes.html#list) of [`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack) – The tracks.
* **Return type:**
  [list](https://docs.python.org/3/builtins/stdtypes.html#list)[[webrtc.MediaStreamTrack](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack)]

#### get_track_by_id(track_id)

Returns the track with an ID, the first one if several tracks have it.

See [MDN: MediaStream/getTrackById](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/getTrackById).

* **Parameters:**
  **track_id** ([`str`](https://docs.python.org/3/builtins/stdtypes.html#str)) – The ID.
* **Returns:**
  [`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack), optional – The track, [`None`](https://docs.python.org/3/builtins/constants.html#None) if no track has the ID.
* **Return type:**
  [webrtc.MediaStreamTrack](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack) | None

#### add_track(track)

Adds a track to the stream, unless it’s there already. Fires no `addtrack` event.

See [MDN: MediaStream/addTrack](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/addTrack).

* **Parameters:**
  **track** ([`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack)) – The track.

#### remove_track(track)

Removes a track from the stream, if it’s there. Fires no `removetrack` event.

See [MDN: MediaStream/removeTrack](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/removeTrack).

* **Parameters:**
  **track** ([`webrtc.MediaStreamTrack`](media_stream_track.md#webrtc.interfaces.media_stream_track.MediaStreamTrack)) – The track.

#### clone()

Returns a copy of the stream with a new [`id`](#webrtc.interfaces.media_stream.MediaStream.id), holding clones of its tracks.

See [MDN: MediaStream/clone](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream/clone).

* **Returns:**
  [`webrtc.MediaStream`](#webrtc.interfaces.media_stream.MediaStream) – The clone.
* **Return type:**
  [webrtc.MediaStream](#webrtc.interfaces.media_stream.MediaStream)
