Start · Sprachen · JavaScript · Referenz · AudioTrack.label

AudioTrack.label

Eigenschaft

Schreibgeschützte Zeichenkette mit der menschenlesbaren Bezeichnung einer Audiospur, z. B. „Deutsch“ oder „Regiekommentar“, sonst ein leerer String.

seit JavaScript Eingeschränkt: Safari (standardmäßig); Chrome/Edge Kategorie: webapi

Signatur

AudioTrack.label

Beschreibung

Die Eigenschaft label eines AudioTrack-Objekts enthält den Namen, den die Medienquelle der Audiospur gegeben hat, zum Beispiel „English“, „Deutsch (5.1)“ oder „Audiodeskription“. Der Wert stammt aus den Metadaten des Containers (etwa MP4, WebM oder einem HLS-Manifest). Fehlt eine solche Angabe, ist label ein leerer String "".

Man braucht label vor allem für eigene Player-Oberflächen. Die Spuren eines <video>- oder <audio>-Elements erreicht man über HTMLMediaElement.audioTracks. Aus diesen Spuren lässt sich ein Auswahlmenü bauen, in dem Nutzer zwischen Sprachen oder Kommentarspuren wechseln. Umgeschaltet wird über AudioTrack.enabled.

Die Eigenschaft ist schreibgeschützt. Eine Zuweisung hat keine Wirkung und wirft im Strict Mode einen TypeError. Das Label ist außerdem nicht an die Oberflächensprache des Browsers angepasst: Es erscheint genau so, wie es in der Medienquelle steht. Deshalb sollte man eine Ersatzanzeige einplanen, etwa aus AudioTrack.language oder der Position der Spur.

Rückgabewert

Typ
string
Beschreibung
Die menschenlesbare Bezeichnung der Audiospur oder "", wenn die Medienquelle keine Bezeichnung liefert.

Beispiele

Alle Audiospuren mit Bezeichnung auflisten

const video = document.querySelector('video');

video.addEventListener('loadedmetadata', () => {
  if (!video.audioTracks) {
    console.warn('AudioTrackList wird nicht unterstützt');
    return;
  }
  for (const track of video.audioTracks) {
    console.log(`${track.id}: ${track.label || '(ohne Bezeichnung)'} [${track.language}]`);
  }
});
1: English [en] 2: Deutsch [de] 3: (ohne Bezeichnung) [fr]

Auswahlmenü für die Tonspur bauen

const video = document.querySelector('#film');
const select = document.querySelector('#tonspur');

const buildMenu = () => {
  select.replaceChildren();
  [...video.audioTracks].forEach((track, index) => {
    const option = document.createElement('option');
    option.value = String(index);
    // Ersatztext, wenn weder label noch language gesetzt sind
    option.textContent = track.label || track.language || `Spur ${index + 1}`;
    option.selected = track.enabled;
    select.append(option);
  });
};

select.addEventListener('change', () => {
  const chosen = Number(select.value);
  [...video.audioTracks].forEach((track, i) => {
    track.enabled = i === chosen;
  });
});

video.audioTracks?.addEventListener('addtrack', buildMenu);
video.audioTracks?.addEventListener('removetrack', buildMenu);

Kommentarspur anhand des Labels finden

const findCommentaryTrack = (media) => {
  const tracks = [...(media.audioTracks ?? [])];
  return tracks.find(
    (t) => t.kind === 'commentary' || /kommentar|commentary/i.test(t.label)
  ) ?? null;
};

const video = document.querySelector('video');
video.addEventListener('loadedmetadata', () => {
  const commentary = findCommentaryTrack(video);
  console.log(commentary ? `Gefunden: ${commentary.label}` : 'Keine Kommentarspur');
});
Gefunden: Regiekommentar

// Wichtig · Fallstricke

  • Browser-Unterstützung: audioTracks und AudioTrack sind nur in Safari standardmäßig aktiv. In Chrome/Edge (chrome://flags, „Experimental Web Platform features“) und Firefox (media.track.enabled) muss man ein Flag setzen. Deshalb vorher mit if (video.audioTracks) prüfen oder optionale Verkettung (?.) nutzen.
  • Leerer String: Viele Dateien enthalten kein Label. Rechnen Sie also mit "" und zeigen Sie in dem Fall eine Ersatzbezeichnung an.
  • Zeitpunkt: Die Spuren und ihre Labels stehen oft erst ab loadedmetadata oder nach dem addtrack-Ereignis der AudioTrackList fest.
  • Sicherheit: Das Label kommt aus der Mediendatei, also potenziell von Dritten. Geben Sie es per textContent aus, nicht per innerHTML, damit keine XSS-Lücke entsteht.
  • Bei Media Source Extensions (MSE) hängt das Label davon ab, wie die Segmente verpackt sind, und kann je nach Browser fehlen.