---
title: "MediaStream | JavaScript maps SDK"
description: "Documentation for MapTiler SDK"
---

> For AI agents: a documentation index is available at [/llms.txt](https://docs.maptiler.com/llms.txt). Markdown versions of all pages are available by appending .md to any URL.

# Interface MediaStream

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.

[MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream)

interface MediaStream {  
    [active](#active): boolean;  
    [id](#id): string;  
    [onaddtrack](#onaddtrack): ((this: MediaStream, ev: [MediaStreamTrackEvent](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrackEvent/)) \=> any) | null;  
    [onremovetrack](#onremovetrack):  
        | ((this: MediaStream, ev: [MediaStreamTrackEvent](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrackEvent/)) \=> any)  
        | null;  
    [addEventListener](#addeventlistener-1)<[K](#addeventlistenerk) extends keyof [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\>(  
        type: [K](#addeventlistenerk),  
        listener: (this: MediaStream, ev: [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\[[K](#addeventlistenerk)\]) \=> any,  
        options?: boolean | AddEventListenerOptions,  
    ): void;  
    [addEventListener](#addeventlistener-2)(  
        type: string,  
        listener: [EventListenerOrEventListenerObject](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.EventListenerOrEventListenerObject/),  
        options?: boolean | AddEventListenerOptions,  
    ): void;  
    [addTrack](#addtrack-1)(track: [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)): void;  
    [clone](#clone-1)(): MediaStream;  
    [dispatchEvent](#dispatchevent-1)(event: Event): boolean;  
    [getAudioTracks](#getaudiotracks-1)(): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\];  
    [getTrackById](#gettrackbyid-1)(trackId: string): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/) | null;  
    [getTracks](#gettracks-1)(): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\];  
    [getVideoTracks](#getvideotracks-1)(): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\];  
    [removeEventListener](#removeeventlistener-1)<[K](#removeeventlistenerk) extends keyof [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\>(  
        type: [K](#removeeventlistenerk),  
        listener: (this: MediaStream, ev: [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\[[K](#removeeventlistenerk)\]) \=> any,  
        options?: boolean | EventListenerOptions,  
    ): void;  
    [removeEventListener](#removeeventlistener-2)(  
        type: string,  
        listener: [EventListenerOrEventListenerObject](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.EventListenerOrEventListenerObject/),  
        options?: boolean | EventListenerOptions,  
    ): void;  
    [removeTrack](#removetrack-1)(track: [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)): void;  
}

#### Hierarchy

-   EventTarget
    -   MediaStream

##### Index

### Properties[](#properties)

[active](#active) [id](#id) [onaddtrack](#onaddtrack) [onremovetrack](#onremovetrack)

### Methods[](#methods)

[addEventListener](#addeventlistener) [addTrack](#addtrack) [clone](#clone) [dispatchEvent](#dispatchevent) [getAudioTracks](#getaudiotracks) [getTrackById](#gettrackbyid) [getTracks](#gettracks) [getVideoTracks](#getvideotracks) [removeEventListener](#removeeventlistener) [removeTrack](#removetrack)

## Properties[](#properties-1)

### `Readonly`active[](#active)

active: boolean

The **`active`** read-only property of the MediaStream interface returns a Boolean value which is true if the stream is currently active; otherwise, it returns false. A stream is considered active if at least one of its MediaStreamTracks does not have its property MediaStreamTrack.readyState set to ended. Once every track has ended, the stream's active property becomes false.

[MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/active)

### `Readonly`id[](#id)

id: string

The **`id`** read-only property of the MediaStream interface is a string containing 36 characters denoting a unique identifier (GUID) for the object.

[MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/id)

### onaddtrack[](#onaddtrack)

onaddtrack: ((this: MediaStream, ev: [MediaStreamTrackEvent](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrackEvent/)) \=> any) | null

[MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/addtrack_event)

### onremovetrack[](#onremovetrack)

onremovetrack: ((this: MediaStream, ev: [MediaStreamTrackEvent](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrackEvent/)) \=> any) | null

[MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/removetrack_event)

## Methods[](#methods-1)

### addEventListener[](#addeventlistener)

-   addEventListener<[K](#addeventlistenerk) extends keyof [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\>(  
        type: [K](#addeventlistenerk),  
        listener: (this: MediaStream, ev: [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\[[K](#addeventlistenerk)\]) \=> any,  
        options?: boolean | AddEventListenerOptions,  
    ): void[](#addeventlistener-1)
    
    The **`addEventListener()`** method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
    
    #### Type Parameters
    
    -   K extends keyof [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)
    
    #### Parameters
    
    -   type: [K](#addeventlistenerk)
    -   listener: (this: MediaStream, ev: [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\[[K](#addeventlistenerk)\]) \=> any
    -   `Optional`options: boolean | AddEventListenerOptions
    
    #### Returns void
    
    Overrides EventTarget.addEventListener
    
-   addEventListener(  
        type: string,  
        listener: [EventListenerOrEventListenerObject](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.EventListenerOrEventListenerObject/),  
        options?: boolean | AddEventListenerOptions,  
    ): void[](#addeventlistener-2)
    
    The **`addEventListener()`** method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
    
    #### Parameters
    
    -   type: string
    -   listener: [EventListenerOrEventListenerObject](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.EventListenerOrEventListenerObject/)
    -   `Optional`options: boolean | AddEventListenerOptions
    
    #### Returns void
    
    Overrides EventTarget.addEventListener
    

### addTrack[](#addtrack)

-   addTrack(track: [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)): void[](#addtrack-1)
    
    The **`addTrack()`** method of the MediaStream interface adds a new track to the stream. The track is specified as a parameter of type MediaStreamTrack.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/addTrack)
    
    #### Parameters
    
    -   track: [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)
    
    #### Returns void
    

### clone[](#clone)

-   clone(): MediaStream[](#clone-1)
    
    The **`clone()`** method of the MediaStream interface creates a duplicate of the MediaStream. This new MediaStream object has a new unique id and contains clones of every MediaStreamTrack contained by the MediaStream on which clone() was called.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/clone)
    
    #### Returns MediaStream
    

### dispatchEvent[](#dispatchevent)

-   dispatchEvent(event: Event): boolean[](#dispatchevent-1)
    
    The **`dispatchEvent()`** method of the EventTarget sends an Event to the object, (synchronously) invoking the affected event listeners in the appropriate order. The normal event processing rules (including the capturing and optional bubbling phase) also apply to events dispatched manually with dispatchEvent().
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
    
    #### Parameters
    
    -   event: Event
    
    #### Returns boolean
    
    Inherited from EventTarget.dispatchEvent
    

### getAudioTracks[](#getaudiotracks)

-   getAudioTracks(): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\][](#getaudiotracks-1)
    
    The **`getAudioTracks()`** method of the MediaStream interface returns a sequence that represents all the MediaStreamTrack objects in this stream's track set where MediaStreamTrack.kind is audio.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/getAudioTracks)
    
    #### Returns [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\]
    

### getTrackById[](#gettrackbyid)

-   getTrackById(trackId: string): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/) | null[](#gettrackbyid-1)
    
    The **`getTrackById()`** method of the MediaStream interface returns a MediaStreamTrack object representing the track with the specified ID string. If there is no track with the specified ID, this method returns null.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/getTrackById)
    
    #### Parameters
    
    -   trackId: string
    
    #### Returns [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/) | null
    

### getTracks[](#gettracks)

-   getTracks(): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\][](#gettracks-1)
    
    The **`getTracks()`** method of the MediaStream interface returns a sequence that represents all the MediaStreamTrack objects in this stream's track set, regardless of MediaStreamTrack.kind.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/getTracks)
    
    #### Returns [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\]
    

### getVideoTracks[](#getvideotracks)

-   getVideoTracks(): [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\][](#getvideotracks-1)
    
    The **`getVideoTracks()`** method of the MediaStream interface returns a sequence of MediaStreamTrack objects representing the video tracks in this stream.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/getVideoTracks)
    
    #### Returns [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)\[\]
    

### removeEventListener[](#removeeventlistener)

-   removeEventListener<[K](#removeeventlistenerk) extends keyof [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\>(  
        type: [K](#removeeventlistenerk),  
        listener: (this: MediaStream, ev: [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\[[K](#removeeventlistenerk)\]) \=> any,  
        options?: boolean | EventListenerOptions,  
    ): void[](#removeeventlistener-1)
    
    The **`removeEventListener()`** method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. The event listener to be removed is identified using a combination of the event type, the event listener function itself, and various optional options that may affect the matching process; see Matching event listeners for removal.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
    
    #### Type Parameters
    
    -   K extends keyof [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)
    
    #### Parameters
    
    -   type: [K](#removeeventlistenerk)
    -   listener: (this: MediaStream, ev: [MediaStreamEventMap](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamEventMap/)\[[K](#removeeventlistenerk)\]) \=> any
    -   `Optional`options: boolean | EventListenerOptions
    
    #### Returns void
    
    Overrides EventTarget.removeEventListener
    
-   removeEventListener(  
        type: string,  
        listener: [EventListenerOrEventListenerObject](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.EventListenerOrEventListenerObject/),  
        options?: boolean | EventListenerOptions,  
    ): void[](#removeeventlistener-2)
    
    The **`removeEventListener()`** method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. The event listener to be removed is identified using a combination of the event type, the event listener function itself, and various optional options that may affect the matching process; see Matching event listeners for removal.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
    
    #### Parameters
    
    -   type: string
    -   listener: [EventListenerOrEventListenerObject](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.EventListenerOrEventListenerObject/)
    -   `Optional`options: boolean | EventListenerOptions
    
    #### Returns void
    
    Overrides EventTarget.removeEventListener
    

### removeTrack[](#removetrack)

-   removeTrack(track: [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)): void[](#removetrack-1)
    
    The **`removeTrack()`** method of the MediaStream interface removes a MediaStreamTrack from a stream.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/MediaStream/removeTrack)
    
    #### Parameters
    
    -   track: [MediaStreamTrack](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.MediaStreamTrack/)
    
    #### Returns void
