VideoTrack

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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.

Instance 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 true for one track while another track is active will make that other track inactive.

id Read only

A string which uniquely identifies the track within the media. This ID can be used to locate a specific track within a video track list by calling VideoTrackList.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.

kind Read only

A string specifying the category into which the track falls. For example, the main video track would have a kind of "main".

label Read only

A string providing a human-readable label for the track. For example, a track whose kind is "sign" might have a label of "A sign-language interpretation". This string is empty if no label is provided.

language Read only

A string specifying the video track's primary language, or an empty string if unknown. The language is specified as a BCP 47 language tag such as "en-US" or "pt-BR".

sourceBuffer Read only

The SourceBuffer that created the track. Returns null if the track was not created by a SourceBuffer or the SourceBuffer has been removed from the MediaSource.sourceBuffers attribute 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:

js
const el = document.querySelector("video");
const 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:

js
const 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).

js
for (const track of tracks) {
  if (track.language === userLanguage) {
    track.selected = true;
    break;
  }
}

The language is specified as a valid BCP 47 language tag, for example "en-US" for US English.

Specifications

Specification
HTML
# videotrack

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
VideoTrack
Chrome – No support
Chrome 37 (Release date: 2014-08-26)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox 33 (Release date: 2014-10-14)
disabled
disabled From version 33 users must explicitly set the media.track.enabled preference to true. To change preferences in Firefox, visit about:config.
Opera – No support
Opera 24 (Release date: 2014-09-02)
disabled
disabled From version 24 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 37 (Release date: 2014-09-03)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Full support
Safari on iOS 7 (Release date: 2013-09-18)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Full support
WebView on iOS 7 (Release date: 2013-09-18)
footnote Full support
id
Chrome – No support
Chrome 37 (Release date: 2014-08-26)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox 33 (Release date: 2014-10-14)
disabled
disabled From version 33 users must explicitly set the media.track.enabled preference to true. To change preferences in Firefox, visit about:config.
Opera – No support
Opera 24 (Release date: 2014-09-02)
disabled
disabled From version 24 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 37 (Release date: 2014-09-03)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Full support
Safari on iOS 7 (Release date: 2013-09-18)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Full support
WebView on iOS 7 (Release date: 2013-09-18)
footnote Full support
kind
Chrome – No support
Chrome 37 (Release date: 2014-08-26)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox 33 (Release date: 2014-10-14)
disabled
disabled From version 33 users must explicitly set the media.track.enabled preference to true. To change preferences in Firefox, visit about:config.
Opera – No support
Opera 24 (Release date: 2014-09-02)
disabled
disabled From version 24 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 37 (Release date: 2014-09-03)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Full support
Safari on iOS 7 (Release date: 2013-09-18)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Full support
WebView on iOS 7 (Release date: 2013-09-18)
footnote Full support
label
Chrome – No support
Chrome 37 (Release date: 2014-08-26)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox 33 (Release date: 2014-10-14)
disabled
disabled From version 33 users must explicitly set the media.track.enabled preference to true. To change preferences in Firefox, visit about:config.
Opera – No support
Opera 24 (Release date: 2014-09-02)
disabled
disabled From version 24 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 37 (Release date: 2014-09-03)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Full support
Safari on iOS 7 (Release date: 2013-09-18)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Full support
WebView on iOS 7 (Release date: 2013-09-18)
footnote Full support
language
Chrome – No support
Chrome 37 (Release date: 2014-08-26)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox 33 (Release date: 2014-10-14)
disabled
disabled From version 33 users must explicitly set the media.track.enabled preference to true. To change preferences in Firefox, visit about:config.
Opera – No support
Opera 24 (Release date: 2014-09-02)
disabled
disabled From version 24 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 37 (Release date: 2014-09-03)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Full support
Safari on iOS 7 (Release date: 2013-09-18)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Full support
WebView on iOS 7 (Release date: 2013-09-18)
footnote Full support
selected
Chrome – No support
Chrome 37 (Release date: 2014-08-26)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox 33 (Release date: 2014-10-14)
disabled
disabled From version 33 users must explicitly set the media.track.enabled preference to true. To change preferences in Firefox, visit about:config.
Opera – No support
Opera 24 (Release date: 2014-09-02)
disabled
disabled From version 24 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 37 (Release date: 2014-09-03)
disabled
disabled From version 37 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Full support
Safari on iOS 7 (Release date: 2013-09-18)
footnote Full support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Full support
WebView on iOS 7 (Release date: 2013-09-18)
footnote Full support
sourceBuffer
Chrome – No support
Chrome 51 (Release date: 2016-05-25)
disabled
disabled From version 51 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome, visit chrome://flags.
Edge – No support
Edge 12 – 18 (Release date: 2015-07-29)
unknown Support unknown
Edge – No support
Edge 79 (Release date: 2020-01-15)
disabled
disabled From version 79 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Edge, visit about:flags.
Firefox – No support
Firefox
footnote No support
Opera – No support
Opera 38 (Release date: 2016-06-08)
disabled
disabled From version 38 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Opera, visit opera://flags.
Safari – Full support
Safari 7 (Release date: 2013-10-22)
footnote Full support
Chrome Android – No support
Chrome Android 51 (Release date: 2016-06-08)
disabled
disabled From version 51 users must explicitly set the enable-experimental-web-platform-features preference to enabled. To change preferences in Chrome Android, visit chrome://flags.
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – Partial support
Safari on iOS 13 (Release date: 2019-09-19)
footnote Partial support
footnote Exposed in Mobile Safari on iPad but not on iPhone.
footnote See bug 200147
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – Partial support
WebView on iOS 13 (Release date: 2019-09-19)
footnote Partial support
footnote Exposed in Mobile Safari on iPad but not on iPhone.
footnote See bug 200147

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
User must explicitly enable this feature.
Has more compatibility info.