Start · Sprachen · JavaScript · Referenz · AudioTrack.enabled

AudioTrack.enabled

Eigenschaft

Boolesche Eigenschaft, die angibt bzw. festlegt, ob ein <code>AudioTrack</code> eines Medienelements gerade aktiv ist und abgespielt wird.

seit JavaScript Safari 7+ (standardmäßig); Chrome/Edge nur mit Fla Kategorie: webapi

Signatur

AudioTrack.enabled

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

Typ
boolean
Beschreibung
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'}`);
  }
});
de (Deutsch): aktiv en (English): 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);
Aktive Spuren: Deutsch, Regiekommentar

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');
}
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 video prüfen.
  • Die Spurliste ist erst nach loadedmetadata zuverlä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 false setzen, sonst laufen beide Sprachen gleichzeitig.
  • Sind alle Spuren deaktiviert, ist das Video stumm, obwohl muted weiterhin false ist. 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.