Signatur
Beschreibung
Die Eigenschaft enabled eines AudioTrack-Objekts ist lesbar und schreibbar. Sie ist true, wenn die Audiospur gerade Teil der Wiedergabe ist, sonst false. Setzt man den Wert auf false, wird die Spur stummgeschaltet. Das Medienelement läuft dabei ganz normal weiter, nur dieser Ton fehlt.
Anders als bei Videospuren (VideoTrack.selected, dort ist immer nur eine Spur ausgewählt) dürfen mehrere Audiospuren gleichzeitig aktiv sein. Sie werden dann zusammengemischt. Typische Anwendungen sind die Auswahl der Sprachfassung (Deutsch/Englisch), das Zuschalten eines Regiekommentars oder einer Audiodeskription für Barrierefreiheit.
Die Spuren erreicht man über HTMLMediaElement.audioTracks, eine AudioTrackList. Jede Änderung an enabled löst an dieser Liste das Ereignis change aus. So lassen sich Bedienoberflächen (z. B. ein Sprachmenü) mit dem tatsächlichen Zustand abgleichen.
Rückgabewert
true, wenn die Audiospur aktiv ist und abgespielt wird, sonst false. Wenn man einen booleschen Wert zuweist, wird die Spur ein- bzw. ausgeschaltet.Beispiele
Status aller Audiospuren auslesen
const video = document.querySelector('video');
video.addEventListener('loadedmetadata', () => {
for (const track of video.audioTracks) {
console.log(`${track.language} (${track.label}): ${track.enabled ? 'aktiv' : 'inaktiv'}`);
}
});
Sprachfassung umschalten
const video = document.querySelector('video');
const setLanguage = (lang) => {
const tracks = Array.from(video.audioTracks);
if (!tracks.some((t) => t.language === lang)) return false;
// Nur die gewünschte Sprache aktivieren, alle anderen abschalten
tracks.forEach((t) => {
t.enabled = t.language === lang;
});
return true;
};
document.querySelector('#btn-en').addEventListener('click', () => setLanguage('en'));
Regiekommentar zusätzlich zuschalten
const video = document.querySelector('video');
const toggleCommentary = () => {
const commentary = Array.from(video.audioTracks)
.find((t) => t.kind === 'commentary');
if (commentary) {
// Wird zur Hauptspur hinzugemischt
commentary.enabled = !commentary.enabled;
}
};
video.audioTracks.addEventListener('change', () => {
const active = Array.from(video.audioTracks).filter((t) => t.enabled);
console.log('Aktive Spuren:', active.map((t) => t.label).join(', '));
});
document.querySelector('#commentary').addEventListener('click', toggleCommentary);
Feature-Erkennung mit Rückfall
const video = document.querySelector('video');
if ('audioTracks' in video) {
console.log('AudioTrack-API verfügbar, Spuren:', video.audioTracks.length);
} else {
console.log('Keine AudioTrack-API – Sprachwahl z. B. über HLS/DASH-Player lösen');
}
// Wichtig · Fallstricke
- Browserunterstützung: Standardmäßig nur in Safari verfügbar. In Chrome/Edge ist die API nur über ein Experimentier-Flag nutzbar, in Firefox über
media.track.enabled. Vor der Nutzung immer mit'audioTracks' in videoprüfen. - Die Spurliste ist erst nach
loadedmetadatazuverlässig befüllt. Wer vorher darauf zugreift, erhält oft eine leere Liste. - Mehrere aktive Spuren werden gemischt. Wer die Sprache wechseln will, muss die bisherige Spur ausdrücklich auf
falsesetzen, sonst laufen beide Sprachen gleichzeitig. - Sind alle Spuren deaktiviert, ist das Video stumm, obwohl
mutedweiterhinfalseist. Das sollte man in der Bedienoberfläche berücksichtigen. - Bei adaptivem Streaming über Media Source Extensions (hls.js, dash.js) ist die Spurverwaltung meist Sache der Bibliothek. Dort nutzt man deren eigene API statt
enabled.