The VideoTrack interface represents a single video track from a <video> element. The most common use for accessing a VideoTrack object is to toggle its selected property in order to make it the active video track for its <video> element.
Properties
selected- A Boolean value which controls whether or not the video track is active. Only a single video track can be active at any given time, so setting this property to
truefor one track while another track is active will make that other track inactive. idRead only- A
DOMStringwhich uniquely identifies the track within the media. This ID can be used to locate a specific track within a video track list by callingVideoTrackList.getTrackById(). The ID can also be used as the fragment part of the URL if the media supports seeking by media fragment per the Media Fragments URI specification. kindRead only- A
DOMStringspecifying the category into which the track falls. For example, the main video track would have akindof"main". labelRead only- A
DOMStringproviding a human-readable label for the track. For example, a track whosekindis"sign"might have alabelof"A sign-language interpretation". This string is empty if no label is provided. languageRead only- A
DOMStringspecifying the video track's primary language, or an empty string if unknown. The language is specified as a BCP 47 (RFC 5646) language code, such as"en-US"or"pt-BR". sourceBufferRead only- The
SourceBufferthat created the track. Returns null if the track was not created by aSourceBufferor theSourceBufferhas been removed from theMediaSource.sourceBuffersattribute of its parent media source.
Usage notes
To get a VideoTrack for a given media element, use the element's videoTracks property, which returns a VideoTrackList object from which you can get the individual tracks contained in the media:
var el = document.querySelector("video");
var tracks = el.videoTracks;
You can then access the media's individual tracks using either array syntax or functions such as forEach().
This first example gets the first video track on the media:
var firstTrack = tracks[0];
The next example scans through all of the media's video tracks, activating the first video track that is in the user's preferred language (taken from a variable userLanguage).
for (var i = 0; i < tracks.length; i++) {
if (tracks[i].language === userLanguage) {
tracks[i].selected = true;
break;
}
});
The language is in standard (RFC 5646) format. For US English, this would be "en-US", for example.
Specifications
| Specification | Status | Comment |
|---|---|---|
| HTML Living Standard The definition of 'VideoTrack' in that specification. |
Living Standard |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
VideoTrack | Chrome
Full support
45
| Edge
Full support
79
| Firefox
Full support
33
| IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android
Full support
33
| Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
id | Chrome
Full support
45
| Edge
Full support
79
| Firefox
Full support
33
| IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android
Full support
33
| Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
kind | Chrome
Full support
45
| Edge
Full support
79
| Firefox
Full support
33
| IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android
Full support
33
| Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
label | Chrome
Full support
45
| Edge
Full support
79
| Firefox
Full support
33
| IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android
Full support
33
| Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
language | Chrome
Full support
45
| Edge
Full support
79
| Firefox
Full support
33
| IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android
Full support
33
| Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
selected | Chrome
Full support
45
| Edge
Full support
79
| Firefox
Full support
33
| IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android
Full support
33
| Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
sourceBuffer | Chrome
Full support
45
| Edge
Full support
79
| Firefox No support No | IE Full support 10 | Opera
Full support
32
| Safari Full support 6.1 | WebView Android Full support 45 | Chrome Android
Full support
45
| Firefox Android No support No | Opera Android
Full support
32
| Safari iOS Full support 7 | Samsung Internet Android No support No |
Legend
- Full support
- Full support
- No support
- No support
- User must explicitly enable this feature.
- User must explicitly enable this feature.
