Signatur
Beschreibung
Die Methode getTrackById() durchsucht die Spuren (Audio und Video) eines MediaStream und gibt die MediaStreamTrack zurück, deren Eigenschaft id genau mit der übergebenen Zeichenkette übereinstimmt. Gibt es keine solche Spur, ist der Rückgabewert null.
Nützlich ist das vor allem, wenn Sie nur die ID einer Spur gespeichert oder übertragen haben, z. B. in der WebRTC-Signalisierung, in einem Zustandsobjekt Ihrer Anwendung oder in einer Auswahlliste. So kommen Sie gezielt an die Spur, ohne getTracks() selbst durchlaufen und filtern zu müssen.
Die ID einer Spur ist eine vom Browser erzeugte, eindeutige Zeichenkette (meist eine UUID). Sie ändert sich während der Lebensdauer der Spur nicht. Geklonte Spuren (track.clone()) bekommen allerdings eine neue ID.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | string | Die ID der gesuchten Spur, also der Wert von MediaStreamTrack.id. Groß- und Kleinschreibung werden unterschieden. |
Rückgabewert
MediaStreamTrack oder null, wenn der Stream keine Spur mit dieser ID enthält.Beispiele
Spur über gespeicherte ID wiederfinden
const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
// ID der Videospur merken, z. B. im Anwendungszustand
const videoId = stream.getVideoTracks()[0].id;
// Später: Spur gezielt abrufen
const track = stream.getTrackById(videoId);
console.log(track.kind, track.label);
Mikrofon stummschalten, mit null-Prüfung
const toggleMute = (stream, trackId) => {
const track = stream.getTrackById(trackId);
if (!track) {
console.warn(`Keine Spur mit ID ${trackId} gefunden`);
return;
}
track.enabled = !track.enabled;
console.log(`${track.kind}: ${track.enabled ? 'aktiv' : 'stumm'}`);
};
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const audioId = stream.getAudioTracks()[0].id;
toggleMute(stream, audioId);
toggleMute(stream, 'unbekannte-id');
Nach removeTrack() ist die Spur nicht mehr auffindbar
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
const track = stream.getVideoTracks()[0];
stream.removeTrack(track);
console.log(stream.getTrackById(track.id)); // null
stream.addTrack(track);
console.log(stream.getTrackById(track.id) === track); // true
// Wichtig · Fallstricke
- Immer auf
nullprüfen: Wurde die Spur mitremoveTrack()entfernt oder hat die Gegenseite sie in WebRTC entfernt, gibt die Methodenullzurück und wirft keinen Fehler. - Beendete Spuren bleiben im Stream: Eine mit
track.stop()gestoppte Spur wird weiterhin gefunden. Prüfen Sie bei Bedarftrack.readyState === 'ended'. - IDs in WebRTC: Auf der Empfängerseite stimmt
MediaStreamTrack.idnicht unbedingt mit der ID beim Sender überein. Verwenden Sie für die Zuordnung besserRTCRtpTransceiver.midoder die Stream-IDs aus demtrack-Event. - Klone:
track.clone()undstream.clone()erzeugen neue IDs. Alte IDs finden die Klone nicht. - Die Methode wird von allen modernen Browsern unterstützt.
getUserMedia()funktioniert nur in sicheren Kontexten (HTTPS oder localhost).