## HTML Audio/Video DOM audioTracks Property
The `audioTracks` property returns an `AudioTrackList` object representing all the available audio tracks for a given audio or video element.
This property allows developers to inspect, select, and control different audio tracks (such as alternative languages, commentaries, or audio descriptions) embedded within a media stream.
---
## Syntax
```javascript
const trackList = mediaElement.audioTracks;
```
### Return Value
The property returns an **`AudioTrackList`** object, which contains individual **`AudioTrack`** objects.
---
## API Reference
### 1. The AudioTrackList Object
The `AudioTrackList` represents the collection of audio tracks available for the media element.
| Property / Method | Type | Description |
| :--- | :--- | :--- |
| `length` | `Number` | Returns the number of available audio tracks. |
| `` | `AudioTrack` | Accesses the `AudioTrack` object at the specified index (starting from `0`). |
| `getTrackById(id)` | `Function` | Returns the `AudioTrack` object with the matching `id` string. Returns `null` if no match is found. |
#### AudioTrackList Events
You can also listen to changes in the track list using the following event handlers:
* `onaddtrack`: Fired when a new audio track is added to the media element.
* `onremovetrack`: Fired when an audio track is removed.
* `onchange`: Fired when an audio track is enabled or disabled.
---
### 2. The AudioTrack Object
Each individual audio track within the `AudioTrackList` is represented by an `AudioTrack` object, which exposes the following read-only and read/write properties:
| Property | Type | Description |
| :--- | :--- | :--- |
| `id` | `String` | A unique identifier for the audio track. |
| `kind` | `String` | The category of the audio track. Common values include:
β’ `"main"`: The primary audio track.
β’ `"alternative"`: An alternative audio track.
β’ `"description"`: An audio description of the video action.
β’ `"translation"`: A translated version of the main audio.
β’ `"commentary"`: Commentary (e.g., director's commentary).
β’ `""` (empty string): Unspecified type. |
| `label` | `String` | A user-readable label for the track (e.g., "English (Director's Commentary)"). |
| `language` | `String` | The language of the audio track (e.g., `"en"`, `"zh"`, `"es"`). |
| `enabled` | `Boolean` | Gets or sets whether the audio track is active. Set to `true` to enable the track, or `false` to disable it. Multiple audio tracks can be enabled simultaneously. |
---
## Code Examples
### Example 1: Get the Number of Available Audio Tracks
The following example retrieves a video element and alerts the number of available audio tracks:
```javascript
// Select the video element
const myVideo = document.getElementById("video1");
// Get the number of available audio tracks
const trackCount = myVideo.audioTracks.length;
console.log("Total audio tracks: " + trackCount);
```
### Example 2: Switching Audio Tracks Programmatically
This example demonstrates how to loop through the available audio tracks and enable a specific track (e.g., Spanish translation) while disabling others:
```javascript
const video = document.getElementById("myVideo");
const tracks = video.audioTracks;
// Function to switch audio language
function setAudioLanguage(targetLang) {
for (let i = 0; i < tracks.length; i++) {
if (tracks.language === targetLang) {
tracks.enabled = true; // Enable the target language track
console.log(`Switched audio to: ${tracks.label}`);
} else {
tracks.enabled = false; // Disable other tracks
}
}
}
// Example usage: Switch to Spanish
setAudioLanguage("es");
```
---
## Browser Compatibility
> [!WARNING]
> **Limited Browser Support:** The `audioTracks` property is not supported by default in most mainstream desktop browsers (such as Google Chrome, Mozilla Firefox, and Microsoft Edge) due to varying implementations of multi-track media containers.
>
> It has historically had the best native support in **Safari** (both macOS and iOS) when playing HLS (HTTP Live Streaming) streams. For cross-browser compatibility with multi-track audio, developers typically use custom media player libraries like **Video.js**, **Shaka Player**, or **hls.js**.
π Categories
- β‘ JavaScript (1589)
- π PHP (872)
- π Python3 (810)
- π HTML (691)
- βοΈ C# (650)
- π Python (594)
- β Java (552)
- βοΈ PyTorch (534)
- π§ Linux (472)
- βοΈ C (432)
- π¦ jQuery (406)
- π¨ CSS (377)
- π XML (259)
- π¦ jQuery UI (231)
- π― Bootstrap (220)
- βοΈ C++ (215)
- π °οΈ Angular (205)
- π HTML DOM (201)
- π΄ Redis (188)
- π Web Building (142)
- π Vue.js (141)
- π R (131)
- πΌ Pandas (124)
- ποΈ SQL (105)
- βοΈ Docker (86)
- βοΈ TypeScript (73)
- βοΈ Highcharts (70)
- π AI Agent (70)
- βοΈ React (68)
- π Node.js (65)
- βοΈ Machine Learning (60)
- π Git (59)
- π΅ Go (58)
- π Markdown (58)
- π’ NumPy (55)
- π§ͺ Flask (54)
- βοΈ Scala (53)
- ποΈ SQLite (52)
- π JSTL (52)
- βοΈ VS Code (51)
- π MongoDB (49)
- π Perl (48)
- π Ruby (47)
- π Matplotlib (47)
- βοΈ Uncategorized (46)
- π Swift (46)
- ποΈ PostgreSQL (46)
- βοΈ Data Structures (46)
- π Playwright (46)
- π iOS (45)
- ποΈ MySQL (44)
- βοΈ LangChain (43)
- π FastAPI (40)
- βοΈ Ionic (38)
- π Design Patterns (37)
- βοΈ Eclipse (37)
- π¨ CSS3 (34)
- π Lua (34)
- βοΈ Codex (34)
- πΈ Django (32)
- βοΈ OpenCV (32)
- π Rust (31)
- π JSP (31)
- βοΈ Claude Code (31)
- π Pillow (30)
- βοΈ OpenCode (28)
- π AI Skills (27)
- π Flutter (26)
- π Maven (26)
- π¨ Tailwind CSS (25)
- π§ TensorFlow (25)
- π Servlet (24)
- π Dart (23)
- π Assembly (23)
- βοΈ Memcached (22)
- βοΈ SVG (22)
- βοΈ Electron (22)
- π NLP (22)
- π Regex (21)
- π Android (20)
- π£ Kotlin (19)
- π Julia (19)
- π SOAP (17)
- π Selenium (17)
- π PowerShell (17)
- π Sass (16)
- π HTTP (16)
- π Zig (15)
- π AI (15)
- π AJAX (14)
- π Swagger (14)
- βοΈ Scikit-learn (13)
- βοΈ ECharts (13)
- βοΈ Chart.js (13)
- βοΈ Cursor (13)
- βοΈ SciPy (12)
- π RDF (12)
- π Ollama (12)
- π Next.js (12)
- π Plotly Dash (12)
- π JSON (11)
- π RESTful API (11)
- π WSDL (9)
- βοΈ CMake (8)
- π Firebug (7)
- π Nginx (6)
- βΈοΈ Kubernetes (6)
- π Jupyter (6)
- π LaTeX (4)
- π UniApp (4)
- ποΈ SQL Server (1)
YouTip