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; orfalse
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
tofalse
. Themuted
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 theMediaStreamTrack
. This happens when thepeerIdentity
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
tofalse
, and unmute the media by setting it back totrue
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 theenabled
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 aRTCPeerConnection
,false
otherwise.
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 usingapplyConstraints()
. MediaStreamTrack.getSettings()
- Returns a
MediaTrackSettings
object containing the current values of each of theMediaStreamTrack
'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
.
Events
Listen to these events using addEventListener()
or by assigning an event listener to the oneventname
property of this interface:
ended
- Sent when playback of the track ends (when the value
readyState
changes toended
). Also available using theonended
event handler property. mute
- Sent to the
MediaStreamTrack
when the value of themuted
property is changed totrue
, indicating that the track is unable to provide data temporarily (such as when the network is experiencing a service malfunction). Also available using theonmute
event handler property. isolationchange
- Sent whenever the value of the
isolated
property changes due to the document gaining or losing permission to access the track. Also available through theonisolationchange
event handler property. overconstrained
'- Sent when the constraints specified for the track cause the track to be incompatible and therefore to not be used. Also available through the
onoverconstrained
event handler property. unmute
- Sent to the track when data becomes available again, ending the
muted
state. Also available through theonunmute
event handler property.
Specifications
Specification | Status | Comment |
---|---|---|
Identity for WebRTCThe definition of 'Isolated tracks' in that specification. | Candidate Recommendation | Additional properties for isolated track support |
Media Capture and StreamsThe definition of 'MediaStreamTrack' in that specification. | Candidate Recommendation | Initial definition |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
MediaStreamTrack
|
Chrome
Full support 29 |
Edge
Full support 12 |
Firefox
Full support 22 |
IE
No support No |
Opera
Full support 16 |
Safari
Full support 11 |
WebView Android
Full support ≤37 |
Chrome Android
Full support 29 |
Firefox Android
Full support 22 |
Opera Android
Full support 16 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 2.0 |
applyConstraints
|
Chrome
Full support 63 |
Edge
Full support 12 |
Firefox
Full support 50 |
IE
No support No |
Opera
Full support 46 |
Safari
Full support Yes |
WebView Android
Full support 63 |
Chrome Android
Full support 63 |
Firefox Android
Full support 50 |
Opera Android
Full support 43 |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support 7.0 |
clone
|
Chrome
Full support 45 |
Edge
Full support 12 |
Firefox
Full support 48 |
IE
No support No |
Opera
Full support 32 |
Safari
Full support Yes |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support Yes |
Opera Android
Full support 32 |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support 5.0 |
contentHint
|
Chrome
Full support 60 |
Edge
Full support ≤79 |
Firefox
? |
IE
No support No |
Opera
Full support 47 |
Safari
? |
WebView Android
Full support 60 |
Chrome Android
Full support 60 |
Firefox Android
? |
Opera Android
Full support 44 |
Safari iOS
? |
Samsung Internet Android
Full support 8.0 |
enabled
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 24 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 24 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
ended event
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 50 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 50 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
getCapabilities
|
Chrome
Full support 66 |
Edge
Full support 12 |
Firefox
No support No |
IE
No support No |
Opera
Full support 53 |
Safari
Full support Yes |
WebView Android
Full support 66 |
Chrome Android
Full support 66 |
Firefox Android
No support No |
Opera Android
Full support 47 |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support 9.0 |
getConstraints
|
Chrome
Full support 53 |
Edge
Full support 12 |
Firefox
Full support 50 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support 53 |
Chrome Android
Full support 52 |
Firefox Android
Full support 50 |
Opera Android
Full support Yes |
Safari iOS
No support No |
Samsung Internet Android
Full support 6.0 |
getSettings
|
Chrome
Full support 61 |
Edge
Full support 12 |
Firefox
Full support 50 |
IE
No support No |
Opera
Full support 48 |
Safari
Full support Yes |
WebView Android
Full support 61 |
Chrome Android
Full support 61 |
Firefox Android
Full support 50 |
Opera Android
Full support 45 |
Safari iOS
Full support 11 |
Samsung Internet Android
Full support 8.0 |
|
Chrome
No support ? — 56 |
Edge
? |
Firefox
No support No |
IE
No support No |
Opera
No support ? — 43 |
Safari
? |
WebView Android
No support ? — 56 |
Chrome Android
Full support 56 |
Firefox Android
? |
Opera Android
No support ? — 43 |
Safari iOS
? |
Samsung Internet Android
Full support 6.0 |
id
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support Yes |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
isolated
|
Chrome
? |
Edge
? |
Firefox
No support No |
IE
No support No |
Opera
? |
Safari
? |
WebView Android
? |
Chrome Android
? |
Firefox Android
No support No |
Opera Android
? |
Safari iOS
? |
Samsung Internet Android
? |
kind
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support Yes |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
label
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support Yes |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
mute event
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 59 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 59 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
muted
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 59 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 59 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
onended
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 50 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 50 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
onisolationchange
|
Chrome
? |
Edge
? |
Firefox
No support No |
IE
No support No |
Opera
? |
Safari
? |
WebView Android
? |
Chrome Android
? |
Firefox Android
No support No |
Opera Android
? |
Safari iOS
? |
Samsung Internet Android
? |
onmute
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 59 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 59 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support Yes |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
? |
Opera Android
? |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes | |
onunmute
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 59 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 59 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
Chrome
? |
Edge
Full support 12 |
Firefox
? |
IE
No support No |
Opera
? |
Safari
? |
WebView Android
? |
Chrome Android
? |
Firefox Android
? |
Opera Android
? |
Safari iOS
? |
Samsung Internet Android
? | |
readyState
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 50 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 50 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
Chrome
No support 48 — 59 |
Edge
No support 12 — 79 |
Firefox
Full support Yes |
IE
No support No |
Opera
No support 35 — 46 |
Safari
? |
WebView Android
No support 48 — 59 |
Chrome Android
No support 48 — 59 |
Firefox Android
Full support Yes |
Opera Android
No support 35 — 43 |
Safari iOS
? |
Samsung Internet Android
No support 5.0 — 7.0 | |
stop
|
Chrome
Full support 61 |
Edge
Full support 12 |
Firefox
Full support 34 |
IE
No support No |
Opera
Full support 45 |
Safari
Full support Yes |
WebView Android
Full support 61 |
Chrome Android
Full support 61 |
Firefox Android
Full support 34 |
Opera Android
Full support 43 |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support 8.0 |
unmute event
|
Chrome
Full support Yes |
Edge
Full support 12 |
Firefox
Full support 59 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support Yes |
WebView Android
Full support Yes |
Chrome Android
Full support Yes |
Firefox Android
Full support 59 |
Opera Android
Full support Yes |
Safari iOS
Full support Yes |
Samsung Internet Android
Full support Yes |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- Non-standard. Expect poor cross-browser support.'
- Non-standard. Expect poor cross-browser support.
- Deprecated. Not for use in new websites.'
- Deprecated. Not for use in new websites.
See also
MediaStreamTrack by Mozilla Contributors is licensed under CC-BY-SA 2.5.