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.contentHint
A string that may be used by the web application to provide a hint as to what type of content the track contains to guide how it should be treated by API consumers.
MediaStreamTrack.enabled
A Boolean whose value of true if the track is enabled, that is allowed to render the media source stream; or false if 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.
Note: You can implement standard "mute" functionality by setting enabled to false. The muted property refers to a condition in which there's no media because of a technical issue.
MediaStreamTrack.id Read only
Returns a DOMString containing a unique identifier (GUID) for the track; it is generated by the browser.
MediaStreamTrack.isolated Read only
Returns a Boolean value which is true if the track is isolated; that is, the track cannot be accessed by the document that owns the MediaStreamTrack. This happens when the peerIdentity property is set, or if the track comes from a cross-origin source.
MediaStreamTrack.kind Read only
Returns a DOMString set 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.label Read only
Returns a DOMString containing 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.muted Read only
Returns a Boolean value indicating whether the track is unable to provide media data due to a technical issue.
Note: You can implement standard "mute" functionality by setting enabled to false, and unmute the media by setting it back to true again.
MediaStreamTrack.readonly Read only
Returns a Boolean value with a value of true if the track is readonly (such a video file source or a camera that settings can't be modified), false otherwise.
MediaStreamTrack.readyState Read 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 enabled attribute.
  • "ended" which indicates that the input is not giving any more data and will never provide new data.
MediaStreamTrack.remote  Read only
Returns a Boolean with a value of true if the track is sourced by a RTCPeerConnection, false otherwise.

Event handlers

MediaStreamTrack.onstarted
An EventHandler containing the action to perform when an started event is fired on the object, that is when a new MediaStreamTrack object is added.
MediaStreamTrack.onended
An EventHandler containing the action to perform when an ended event is fired on the object, that is when a  MediaStreamTrack object is removed from it.
MediaStreamTrack.onisolationchange
An event handler that is called when the isolationchange event is fired at the track object. This occurs whenever the value of the isolated property changes due to the document gaining or losing permission to access the track.
MediaStreamTrack.onmute
An EventHandler containing the action to perform when an mute event is fired on the object, that is when the streaming is terminating.
MediaStreamTrack.onunmute
An EventHandler containing the action to perform when an unmute event is fired on the object, that is when a  MediaStreamTrack object is removed from it.
MediaStreamTrack.onoverconstrained
An EventHandler containing the action to perform when an overconstrained event is fired on the object, that is when a  MediaStreamTrack object is removed from it.

Methods

MediaStreamTrack.applyConstraints()
Lets the application specify the ideal and/or ranges of acceptable values for any number of the available constrainable properties of the MediaStreamTrack.
MediaStreamTrack.clone()
Returns a duplicate of the MediaStreamTrack.
MediaStreamTrack.getCapabilities()
Returns the a list of constrainable properties available for the MediaStreamTrack.
MediaStreamTrack.getConstraints()
Returns a MediaTrackConstraints object containing the currently set constraints for the track; the returned value matches the constraints last set using applyConstraints().
MediaStreamTrack.getSettings()
Returns a MediaTrackSettings object containing the current values of each of the MediaStreamTrack's constrainable properties.
MediaStreamTrack.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.
Candidate Recommendation Initial definition
WebRTC 1.0: Real-time Communication Between Browsers
The definition of 'Isolated tracks' in that specification.
Candidate Recommendation Additional properties for isolated track support

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes22 No Yes Yes
enabled Yes1224 No Yes ?
id Yes12 Yes No Yes ?
kind Yes12 Yes No Yes ?
label Yes12 Yes No Yes ?
muted Yes1259 No Yes ?
readyState Yes1250 No Yes ?
remote48 — 5912 Yes No35 — 46 ?
onmute Yes1259 No Yes ?
onunmute Yes1259 No Yes ?
onoverconstrained Yes12 Yes No Yes ?
onended Yes1250 No Yes ?
applyConstraints631250 ?46 ?
clone451248 ?32 ?
getCapabilities6612 No ?53 ?
getConstraints531250 ? Yes ?
getSettings611250 ?48 ?
stop611234 No45 ?
contentHint60 ? ? ?47 ?
getSources Yes — 56 ? No ? Yes — 43 ?
readonly ?12 ? ? ? ?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes22 Yes ? Yes
enabled Yes Yes Yes24 Yes ? Yes
id Yes Yes Yes ? Yes ? Yes
kind Yes Yes Yes ? Yes ? Yes
label Yes Yes Yes ? Yes ? Yes
muted Yes Yes Yes59 ? ? Yes
readyState Yes Yes Yes50 ? ? Yes
remote48 — 5948 — 59 Yes Yes35 — 46 ?5.0
onmute Yes Yes Yes59 Yes ? Yes
onunmute Yes Yes Yes59 Yes ? Yes
onoverconstrained Yes Yes Yes ? ? ? Yes
onended Yes Yes ?50 Yes ? Yes
applyConstraints6363 ?5046 ?7.0
clone4545 ? ?32 ?5.0
getCapabilities6666 ? No53 ? No
getConstraints5352 ?50 Yes No6.0
getSettings6161 ?504811 No
stop6161 Yes3445 ? No
contentHint6060 ? ?47 ? No
getSources Yes — 5656 ? ? Yes — 43 ?6.0
readonly ? ? ? ? ? ? ?

See also

Document Tags and Contributors

Last updated by: Sheppy,