The AudioTrack
interface represents a single audio track from one of the HTML media elements, <audio>
or <video>
. The most common use for accessing an AudioTrack
object is to toggle its enabled
property in order to mute and unmute the track.
Properties
enabled
- A Boolean value which controls whether or not the audio track's sound is enabled. Setting this value to
false
mutes the track's audio. id
Read only- A
DOMString
which uniquely identifies the track within the media. This ID can be used to locate a specific track within an audio track list by callingAudioTrackList.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
DOMString
specifying the category into which the track falls. For example, the main audio track would have akind
of"main"
. label
Read only- A
DOMString
providing a human-readable label for the track. For example, an audio commentary track for a movie might have alabel
of"Commentary with director John Q. Public and actors John Doe and Jane Eod."
This string is empty if no label is provided. language
Read only- A
DOMString
specifying the audio 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"
. sourceBuffer
Read only- The
SourceBuffer
that created the track. Returns null if the track was not created by aSourceBuffer
or theSourceBuffer
has been removed from theMediaSource.sourceBuffers
attribute of its parent media source.
Usage notes
To get an AudioTrack
for a given media element, use the element's audioTracks
property, which returns an AudioTrackList
object from which you can get the individual tracks contained in the media:
var el = document.querySelector("video"); var tracks = el.audioTracks;
You can then access the media's individual tracks using either array syntax or functions such as forEach()
.
This first example gets the first audio track on the media:
var firstTrack = tracks[0];
The next example scans through all of the media's audio tracks, enabling any that are in the user's preferred language (taken from a variable userLanguage
) and disabling any others.
tracks.forEach(function(track) { if (track.language === userLanguage) { track.enabled = true; } else { track.enabled = false; } });
The language
is in standard (RFC 5646) format. For US English, this would be "en-US"
, for example.
Example
This example returns an array of track kinds and labels for potential use in a user interface to select audio tracks for a specified media element. The list is filtered to only allow certain track kinds through.
function getTrackList(el) { var trackList = []; const wantedKinds = [ "main", "alternative", "main-desc", "translation", "commentary" ]; el.audioTracks.forEach(function(track) { if (wantedKinds.includes(track.kind)) { trackList.push({ id: track.id, kind: track.kind, label: track.label }); } }); return trackList; }
The resulting trackList
contains an array of audio tracks whose kind
is one of those in the array wantedKinds
, with each entry providing the track's id
, kind
, and label
.
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living Standard The definition of 'AudioTrack' in that specification. |
Living Standard | |
HTML5 The definition of 'AudioTrack' in that specification. |
Recommendation |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
AudioTrack | 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 |
enabled | 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 |
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.