{{APIRef("Media Capture and Streams")}}
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 {{domxref("MediaStreamTrack.applyConstraints", "applyConstraints()")}} and accessed using {{domxref("MediaStreamTrack.getConstraints", "getConstraints()")}} and {{domxref("MediaStreamTrack.getSettings", "getSettings()")}}. See {{SectionOnPage("/en-US/docs/Web/API/Media_Streams_API", "Capabilities and constraints")}} to learn how to correctly work with constrainable properties. Not doing so correctly will result in your code being unreliable.
- {{domxref("MediaStreamTrack.enabled")}}
- A Boolean value with a 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. - {{domxref("MediaStreamTrack.id")}} {{readonlyInline}}
- Returns a {{domxref("DOMString")}} containing a unique identifier (GUID) for the track; it is generated by the browser.
- {{domxref("MediaStreamTrack.kind")}} {{readonlyInline}}
- Returns a {{domxref("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. - {{domxref("MediaStreamTrack.label")}} {{readonlyInline}}
- Returns a {{domxref("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. - {{domxref("MediaStreamTrack.muted")}} {{readonlyInline}}
- Returns a Boolean value indicating whether the track is muted.
- {{domxref("MediaStreamTrack.readonly")}} {{readonlyInline}}
- 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. - {{domxref("MediaStreamTrack.readyState")}} {{readonlyInline}}
- 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 theMediaStreamTrack.enabled
attribute."ended"
which indicates that the input is not giving any more data and will never provide new data.
- {{domxref("MediaStreamTrack.remote")}} {{readonlyInline}}
- Returns a Boolean with a value of
true
if the track is sourced by a {{domxref("RTCPeerConnection")}},false
otherwise.
Event handlers
- {{domxref("MediaStreamTrack.onstarted")}}
- Is a {{domxref("EventHandler")}} containing the action to perform when an {{event("started")}} event is fired on the object, that is when a new {{domxref("MediaStreamTrack")}} object is added.
- {{domxref("MediaStreamTrack.onmute")}}
- Is a {{domxref("EventHandler")}} containing the action to perform when an {{event("mute")}} event is fired on the object, that is when the streaming is terminating.
- {{domxref("MediaStreamTrack.onunmute")}}
- Is a {{domxref("EventHandler")}} containing the action to perform when an {{event("unmute")}} event is fired on the object, that is when a {{domxref("MediaStreamTrack")}} object is removed from it.
- {{domxref("MediaStreamTrack.onoverconstrained")}}
- Is a {{domxref("EventHandler")}} containing the action to perform when an {{event("overconstrained")}} event is fired on the object, that is when a {{domxref("MediaStreamTrack")}} object is removed from it.
- {{domxref("MediaStreamTrack.onended")}}
- Is a {{domxref("EventHandler")}} containing the action to perform when an {{event("ended_(MediaStream)", "ended")}} event is fired on the object, that is when a {{domxref("MediaStreamTrack")}} object is removed from it.
Methods
- {{domxref("MediaStreamTrack.getConstraints", "MediaStreamTrack.getConstraints()")}}
- Returns a {{domxref('MediaTrackConstraints')}} object containing the full set of constraints for the properties of the current
MediaStreamTrack
. - {{domxref("MediaStreamTrack.applyConstraints()")}}
- Lets the application select the range of values it wants for the capabilities of a
MediaStreamTrack
. - {{domxref("MediaStreamTrack.getSettings", "MediaStreamTrack.getSettings()")}}
- Returns a {{domxref("MediaTrackSettings")}} object containing the state of the constrainable properties for the current
MediaStreamTrack
. - {{domxref("MediaStreamTrack.getCapabilities()")}}
- Returns the a list of constrainable properties for the source that the current
MediaStreamTrack
represents. - {{domxref("MediaStreamTrack.clone()")}}
- Returns a duplicate of the
MediaStreamTrack
. - {{domxref("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 |
---|---|---|
{{SpecName('Media Capture', '#mediastreamtrack', 'MediaStreamTrack')}} | {{Spec2('Media Capture')}} | Initial definition |
Browser compatibility
{{CompatibilityTable}}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(22)}} | {{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} |
stop() |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(34)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
kind, id, label |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(22)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
clone() |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(48)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
onended, readyState |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(50)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
enabled |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(23)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
muted , onmute , onunmute |
{{CompatVersionUnknown}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
remote |
{{CompatChrome(48.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
getConstraints() , getSettings() |
{{CompatChrome(53.0)}} | {{CompatGeckoDesktop(50)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
onoverconstrained |
{{CompatUnknown}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
getSources() |
{{CompatVersionUnknown}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile(22)}} | {{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatVersionUnknown}} |
stop() |
{{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile(34)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} |
kind, id, label |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(22)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
clone() |
{{CompatVersionUnknown}} | {{CompatGeckoMobile(48)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
onended, readyState |
{{CompatVersionUnknown}} | {{CompatGeckoMobile(50)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
enabled |
{{CompatVersionUnknown}} | {{CompatGeckoMobile(23)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
muted , onmute , onunmute |
{{CompatVersionUnknown}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
remote |
{{CompatNo}} | {{CompatChrome(48.0)}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(48.0)}} |
getConstraints() , getSettings() |
{{CompatNo}} | {{CompatChrome(53.0)}} | {{CompatGeckoDesktop(50)}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(52.0)}} |
See also
- Media Capture and Streams API
- {{domxref("MediaStream")}}
- {{domxref("AudioStreamTrack")}} and {{domxref("VideoStreamTrack")}}
- Using the MediaStream API