The MediaStreamTrack interface represents a single media track within a stream; typically, these are audio or video tracks, but other track types may exist as well.
Properties
In addition to the properties listed below, MediaStreamTrack has constrainable properties which can be set using applyConstraints() and accessed using getConstraints() and getSettings(). See Capabilities, constraints, and settings to learn how to correctly work with constrainable properties. Not doing so correctly will result in your code being unreliable.
- MediaStreamTrack.enabled
- A Boolean value with a value of trueif the track is enabled, that is allowed to render the media source stream; orfalseif it is disabled, that is not rendering the media source stream but silence and blackness. If the track has been disconnected, this value can be changed but has no more effect.
- MediaStreamTrack.idRead only
- Returns a DOMStringcontaining a unique identifier (GUID) for the track; it is generated by the browser.
- MediaStreamTrack.kindRead only
- Returns a DOMStringset to"audio"if the track is an audio track and to"video", if it is a video track. It doesn't change if the track is deassociated from its source.
- MediaStreamTrack.labelRead only
- Returns a DOMStringcontaining a user agent-assigned label that identifies the track source, as in"internal microphone". The string may be left empty and is empty as long as no source has been connected. When the track is deassociated from its source, the label is not changed.
- MediaStreamTrack.mutedRead only
- Returns a Boolean value indicating whether the track is muted.
- MediaStreamTrack.readonlyRead only
- Returns a Boolean value with a value of trueif the track is readonly (such a video file source or a camera that settings can't be modified),falseotherwise.
- MediaStreamTrack.readyStateRead only
- Returns an enumerated value giving the status of the track. This will be one of the following values:
 - "live"which indicates that an input is connected and does its best-effort in providing real-time data. In that case, the output of data can be switched on or off using the- MediaStreamTrack.enabledattribute.
- "ended"which indicates that the input is not giving any more data and will never provide new data.
 
- MediaStreamTrack.remoteRead only
- Returns a Boolean with a value of trueif the track is sourced by aRTCPeerConnection,falseotherwise.
Event handlers
- MediaStreamTrack.onstarted
- Is a EventHandlercontaining the action to perform when anstartedevent is fired on the object, that is when a newMediaStreamTrackobject is added.
- MediaStreamTrack.onmute
- Is a EventHandlercontaining the action to perform when anmuteevent is fired on the object, that is when the streaming is terminating.
- MediaStreamTrack.onunmute
- Is a EventHandlercontaining the action to perform when anunmuteevent is fired on the object, that is when aMediaStreamTrackobject is removed from it.
- MediaStreamTrack.onoverconstrained
- Is a EventHandlercontaining the action to perform when anoverconstrainedevent is fired on the object, that is when aMediaStreamTrackobject is removed from it.
- MediaStreamTrack.onended
- Is a EventHandlercontaining the action to perform when anendedevent is fired on the object, that is when aMediaStreamTrackobject is removed from it.
Methods
- applyConstraints()
- Lets the application specify the ideal and/or ranges of acceptable values for any number of the available constrainable properties of the MediaStreamTrack.
- clone()
- Returns a duplicate of the MediaStreamTrack.
- getCapabilities()
- Returns the a list of constrainable properties available for the MediaStreamTrack.
- getConstraints()
- Returns a MediaTrackConstraintsobject containing the currently set constraints for the track; the returned value matches the constraints last set usingapplyConstraints().
- getSettings()
- Returns a MediaTrackSettingsobject containing the current values of each of theMediaStreamTrack's constrainable properties.
- stop()
- Stops playing the source associated to the track, both the source and the track are deassociated. The track state is set to ended.
Specifications
| Specification | Status | Comment | 
|---|---|---|
| Media Capture and Streams The definition of 'MediaStreamTrack' in that specification. | Editor's Draft | Initial definition | 
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) | 
|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | 22 (22) | No support | No support | ? | 
| stop() | (Yes) | ? | 34 (34) | ? | ? | ? | 
| kind, id, label | (Yes) | ? | 22 (22) | ? | ? | ? | 
| clone() | (Yes) | ? | 48 (48) | ? | ? | ? | 
| onended, readyState | (Yes) | ? | 50 (50) | ? | ? | ? | 
| enabled | (Yes) | ? | 23 (23) | (Yes) | (Yes) | (Yes) | 
| muted,onmute,onunmute | (Yes) | ? | No support | ? | ? | ? | 
| remote | 48 Removed 59 | ? | No support | ? | ? | ? | 
| getConstraints(),getSettings() | 53.0 | ? | 50 (50) | ? | ? | ? | 
| onoverconstrained | ? | ? | No support | ? | ? | ? | 
| getSources() removed | 56.0 | ? | No support | ? | 43 | ? | 
| Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | 
|---|---|---|---|---|---|---|---|
| Basic support | (Yes) | (Yes) | (Yes) | 22.0 (22) | No support | No support | ? | 
| stop() | (Yes) | (Yes) | ? | 34.0 (34) | No support | ? | ? | 
| kind, id, label | ? | ? | ? | ? | ? | ? | ? | 
| clone() | ? | ? | ? | ? | ? | ? | ? | 
| onended, readyState | ? | ? | ? | ? | ? | ? | ? | 
| enabled | ? | ? | ? | (Yes) | (Yes) | (Yes) | ? | 
| muted,onmute,onunmute | ? | ? | ? | ? | ? | ? | ? | 
| remote | 48 Removed 59 | 48 Removed 59 | ? | No support | No support | ? | ? | 
| getConstraints(),getSettings() | 53.0 | 52.0 | ? | 50 (50) | No support | ? | ? | 
| onoverconstrained | ? | ? | ? | ? | ? | ? | ? | 
| getSources()removed | 56 | 56 | ? | ? | ? | 43 | ? | 
See also
- Media Capture and Streams API
- MediaStream
- AudioStreamTrackand- VideoStreamTrack
- Using the MediaStream API