Signatur
Beschreibung
Die schreibgeschützte Eigenschaft id eines VideoTrack-Objekts liefert einen String, der die Videospur eindeutig kennzeichnet. Mit dieser Kennung kann man eine bestimmte Spur über VideoTrackList.getTrackById() gezielt abrufen, etwa um zwischen verschiedenen Kamerawinkeln oder einer Gebärdensprach-Spur umzuschalten.
Woher der Wert kommt, hängt vom Containerformat ab. Bei MP4/ISO BMFF entspricht er der Track-ID aus dem tkhd-Box, bei WebM der Track-Nummer, und bei MPEG-2-Transportströmen der Programm-ID (PID). Enthält die Medien-URL ein Media Fragment mit Track-Auswahl (z. B. #track=...), lässt sich die Spur über diese Kennung ansprechen.
Liefert das Medienformat keine Kennung, ist id ein leerer String. Der Wert ist nur innerhalb einer Medienressource eindeutig, nicht über mehrere <video>-Elemente hinweg.
Rückgabewert
Beispiele
Alle Videospuren mit ID auflisten
const video = document.querySelector('video');
video.addEventListener('loadedmetadata', () => {
// videoTracks gibt es nicht in allen Browsern
if (!video.videoTracks) {
console.warn('VideoTrackList wird nicht unterstützt');
return;
}
for (const track of video.videoTracks) {
console.log(`ID: "${track.id}", Art: ${track.kind}, Sprache: ${track.language}`);
}
});
Bestimmte Spur per ID auswählen
const selectTrackById = (video, id) => {
const tracks = video.videoTracks;
const target = tracks?.getTrackById(id);
if (!target) return false;
// Bei Videospuren ist immer nur eine ausgewählt
target.selected = true;
return true;
};
const video = document.querySelector('video');
video.addEventListener('loadedmetadata', () => {
console.log(selectTrackById(video, '2') ? 'Spur 2 aktiv' : 'Spur nicht gefunden');
});
Auswahlmenü aus Spur-IDs erzeugen
const video = document.querySelector('video');
const select = document.querySelector('#camera-select');
video.addEventListener('loadedmetadata', () => {
const tracks = video.videoTracks ?? [];
for (const track of tracks) {
const option = new Option(track.label || `Spur ${track.id || '?'}`, track.id);
option.selected = track.selected;
select.append(option);
}
});
select.addEventListener('change', () => {
const track = video.videoTracks.getTrackById(select.value);
if (track) track.selected = true;
});
// Wichtig · Fallstricke
- Browser-Unterstützung:
HTMLMediaElement.videoTracksund damitVideoTrack.idsind nur in Safari standardmäßig verfügbar. In Chrome/Edge ist ein Experimental-Flag nötig, in Firefox die Einstellungmedia.track.enabled. Vor dem Zugriff immer prüfen, ob esvideo.videoTracksgibt. - Leerer String: Liefert der Container keine Track-IDs, ist
idgleich"". Dann findetgetTrackById()die Spur nicht zuverlässig; nutzen Sie stattdessen den Index in derVideoTrackList. - Zeitpunkt: Spuren und ihre IDs stehen erst nach dem Ereignis
loadedmetadatafest. Wenn sich die Spuren ändern, z. B. bei MSE oder Live-Streams, feuern auf der Liste die Ereignisseaddtrack/removetrack. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert, im Strict Mode wirft sie einen
TypeError.