|
| 1 | +--- |
| 2 | +sidebar_position: 8 |
| 3 | +--- |
| 4 | + |
| 5 | +# MediaStream |
| 6 | + |
| 7 | +The corresponding JS API docs is here [MediaStream](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream). |
| 8 | + |
| 9 | +The MediaStream interface of the Media Capture and Streams API represents a stream of media content. A stream consists of several tracks, such as video or audio tracks. Each track is specified as an instance of MediaStreamTrack. |
| 10 | + |
| 11 | +## Methods |
| 12 | + |
| 13 | +- `addTrack`:Adds the given `MediaStreamTrack` to this `MediaStream`. |
| 14 | + |
| 15 | +```dart |
| 16 | +var mediaStream = MediaStream( |
| 17 | + id: 'audio-stream', |
| 18 | + ownerTag: 'audio-tag', |
| 19 | + active: true, |
| 20 | +/// The active attribute return true if this [MediaStream] is active and false otherwise. |
| 21 | +/// [MediaStream] is considered active if at least one of its [MediaStreamTracks] is not in the [MediaStreamTrack.ended] state. |
| 22 | +/// Once every track has ended, the stream's active property becomes false. |
| 23 | + onAddTrack: (MediaStreamTrack track) { |
| 24 | + print('Track added: ${track.id}'); |
| 25 | + }, |
| 26 | + onRemoveTrack: (MediaStreamTrack track) { |
| 27 | + print('Track removed: ${track.id}'); |
| 28 | + }, |
| 29 | +); |
| 30 | +mediaStream.addTrack(track, {addToNative: true}); |
| 31 | +``` |
| 32 | + |
| 33 | +- `removeTrack`:Removes the given `MediaStreamTrack` object from this `MediaStream`. |
| 34 | + |
| 35 | +```dart |
| 36 | +mediaStream.removeTrack(track,{removeFromNative: true}); |
| 37 | +``` |
| 38 | + |
| 39 | +- `getTracks`:Returns a List `MediaStreamTrack` objects representing all the tracks in this stream. |
| 40 | + |
| 41 | +```dart |
| 42 | +var tracks = mediaStream.getTracks(); |
| 43 | +``` |
| 44 | + |
| 45 | +- `getAudioTracks`:Returns a List `MediaStreamTrack` objects representing the audio tracks in this stream. |
| 46 | +The list represents a snapshot of all the `MediaStreamTrack` objects in this stream's track set whose kind is equal to 'audio'. |
| 47 | + |
| 48 | +```dart |
| 49 | +var audioTracks = mediaStream.getAudioTracks(); |
| 50 | +``` |
| 51 | + |
| 52 | +- `getVideoTracks`:Returns a List `MediaStreamTrack` objects representing the video tracks in this stream. |
| 53 | + |
| 54 | +```dart |
| 55 | +var videoTracks = mediaStream.getVideoTracks(); |
| 56 | +``` |
| 57 | + |
| 58 | +- `getTrackById`:Returns either a `MediaStreamTrack` object from this stream's track set whose id is equal to trackId, or `StateError`, if no such track exists. |
| 59 | + |
| 60 | +```dart |
| 61 | +var track = mediaStream.getTrackById('some-track-id'); |
| 62 | +``` |
| 63 | + |
| 64 | +- `dispose`:Dispose the `MediaStream`. |
| 65 | + |
| 66 | +```dart |
| 67 | +await mediaStream.dispose(); |
| 68 | +``` |
| 69 | + |
| 70 | +## Events |
| 71 | + |
| 72 | +- `onAddTrack`:Fires when a new `MediaStreamTrack` is added to this `MediaStream`. |
| 73 | + |
| 74 | +```dart |
| 75 | +var mediaStream = MediaStream( |
| 76 | + id: 'audio-stream', |
| 77 | + ownerTag: 'audio-tag', |
| 78 | + active: true, |
| 79 | +); |
| 80 | +mediaStream.onAddTrack = (MediaStreamTrack track) { |
| 81 | + print('Track added: ${track.id}'); |
| 82 | +}; |
| 83 | +``` |
| 84 | + |
| 85 | +- `onRemoveTrack`:Fires when a `MediaStreamTrack` is removed from this `MediaStream`. |
| 86 | + |
| 87 | +```dart |
| 88 | +var mediaStream = MediaStream( |
| 89 | + id: 'audio-stream', |
| 90 | + ownerTag: 'audio-tag', |
| 91 | + active: true, |
| 92 | +); |
| 93 | +mediaStream.onRemoveTrack = (MediaStreamTrack track) { |
| 94 | + print('Track removed: ${track.id}'); |
| 95 | +}; |
| 96 | +``` |
| 97 | + |
| 98 | + |
0 commit comments