Start · Sprachen · JavaScript · Referenz · MediaStreamTrack.id

MediaStreamTrack.id

Eigenschaft

Schreibgeschützter String mit einer vom Browser erzeugten, eindeutigen Kennung (UUID) der Medienspur.

seit JavaScript Baseline: alle modernen Browser Kategorie: webapi

Signatur

MediaStreamTrack.id

Beschreibung

Die schreibgeschützte Eigenschaft id eines MediaStreamTrack gibt einen String zurück. Er enthält eine eindeutige Kennung, die der Browser beim Erzeugen der Spur vergibt. Meist ist das eine UUID wie "a1b2c3d4-…". Der Wert ändert sich während der Lebensdauer der Spur nicht.

Mit der Kennung kannst du Spuren eindeutig zuordnen, zum Beispiel als Schlüssel in einer Map, um Zusatzdaten (Benutzername, UI-Element, Statistik) an eine Spur zu hängen. Außerdem findest du damit über MediaStream.getTrackById() eine bestimmte Spur in einem Stream wieder.

Wichtig: Die id gilt nur lokal. Überträgt man eine Spur per WebRTC, muss die Spur auf der Gegenseite nicht dieselbe id haben. Zum Abgleich zwischen den Teilnehmern eignen sich eher RTCRtpTransceiver.mid oder eigene Kennungen, die du über einen Datenkanal oder die Signalisierung überträgst.

Rückgabewert

Typ
string
Beschreibung
Eine vom Browser erzeugte, eindeutige Kennung der Spur. Sie ist schreibgeschützt und ändert sich während der Lebensdauer der Spur nicht.

Beispiele

IDs der Kamera- und Mikrofonspuren ausgeben

const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true });

for (const track of stream.getTracks()) {
  console.log(`${track.kind}: ${track.id} (${track.label})`);
}
audio: 3f2c9e1a-7b4d-4c2e-9a1f-0d8e6b5c4a21 (Internes Mikrofon) video: 8a7d6c5b-1e2f-4a3b-8c9d-7e6f5a4b3c2d (FaceTime HD Camera)

Spur per ID im Stream wiederfinden

const stream = await navigator.mediaDevices.getUserMedia({ video: true });
const [videoTrack] = stream.getVideoTracks();
const savedId = videoTrack.id;

// Später, z. B. in einem anderen Programmteil:
const found = stream.getTrackById(savedId);
console.log(found === videoTrack);
found.stop();
true

Zusatzdaten per Map an Spuren hängen

const trackInfo = new Map();

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [audioTrack] = stream.getAudioTracks();

trackInfo.set(audioTrack.id, { owner: 'lokal', startedAt: Date.now() });

audioTrack.addEventListener('ended', () => {
  trackInfo.delete(audioTrack.id);
  console.log('Spur entfernt:', audioTrack.id);
});

console.log(trackInfo.get(audioTrack.id).owner);
lokal

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie track.id = 'x' wird im normalen Modus stillschweigend ignoriert. Im Strict Mode (also auch in ES-Modulen) wirft sie einen TypeError.
  • Nur lokal eindeutig: Bei WebRTC kann die Spur auf der Empfängerseite eine andere id haben. Verlasse dich beim Abgleich zwischen den Teilnehmern nicht darauf.
  • Klone: track.clone() erzeugt eine neue Spur mit einer neuen id.
  • Die id gibt nicht an, von welchem Gerät die Spur stammt. Dafür ist getSettings().deviceId zuständig.
  • Wird in allen modernen Browsern unterstützt. Für getUserMedia() ist ein sicherer Kontext (HTTPS) nötig.