Start · Sprachen · JavaScript · Referenz · RTCAudioSourceStats.trackIdentifier

RTCAudioSourceStats.trackIdentifier

Eigenschaft

Enthält als String den Wert von <code>MediaStreamTrack.id</code> für den Audio-Track, der die Quelle dieser Statistik ist.

seit JavaScript Chrome 116+, Edge 116+; Firefox und Safari: nicht Kategorie: webapi

Signatur

RTCAudioSourceStats.trackIdentifier

Beschreibung

Die Eigenschaft trackIdentifier gehört zum Wörterbuch RTCAudioSourceStats. Dieses Statistikobjekt liefert RTCPeerConnection.getStats() bzw. RTCRtpSender.getStats() mit type === "media-source" und kind === "audio". Es beschreibt einen Audio-Track, der an einen Sender angehängt ist, also z. B. das lokale Mikrofon.

Der Wert ist ein String, der genau dem id-Attribut des zugehörigen MediaStreamTrack entspricht. Damit lassen sich Kennzahlen aus dem Statistikbericht wie audioLevel, totalAudioEnergy oder echoReturnLoss eindeutig einem konkreten Track in der Anwendung zuordnen, etwa einem bestimmten Mikrofon, wenn mehrere Audioquellen gleichzeitig gesendet werden.

Typische Einsatzfälle sind Pegelanzeigen („Spricht der Nutzer gerade?“), Diagnose-Dashboards und das Aufspüren stummer oder falsch zugeordneter Mikrofone. Zu beachten ist, dass die id des Statistikobjekts selbst (stats.id) nicht die Track-ID ist. Für die Zuordnung ist ausschließlich trackIdentifier maßgeblich.

Beispiele

Audio-Quellstatistiken auslesen und Track-ID anzeigen

const pc = new RTCPeerConnection();
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [track] = stream.getAudioTracks();
pc.addTrack(track, stream);

const report = await pc.getStats();
report.forEach((stats) => {
  if (stats.type === "media-source" && stats.kind === "audio") {
    console.log("Track-ID:", stats.trackIdentifier);
    console.log("Stimmt überein:", stats.trackIdentifier === track.id);
  }
});
Track-ID: 3f1c2a9e-7b4d-4e0a-9c1f-5d2e8a6b7c10 Stimmt überein: true

Pegel pro Mikrofon anhand von trackIdentifier zuordnen

// Liefert eine Map: Track-ID -> aktueller Audiopegel (0..1)
const getAudioLevels = async (pc) => {
  const levels = new Map();
  const report = await pc.getStats();
  for (const stats of report.values()) {
    if (stats.type === "media-source" && stats.kind === "audio") {
      levels.set(stats.trackIdentifier, stats.audioLevel ?? 0);
    }
  }
  return levels;
};

const intervalId = setInterval(async () => {
  const levels = await getAudioLevels(pc);
  for (const sender of pc.getSenders()) {
    const t = sender.track;
    if (t?.kind === "audio") {
      const level = levels.get(t.id) ?? 0;
      console.log(`${t.label}: ${(level * 100).toFixed(0)} %`);
    }
  }
}, 1000);
Standard - Mikrofon (USB Audio): 42 %

Statistik gezielt über den Sender abfragen

const sender = pc.getSenders().find((s) => s.track?.kind === "audio");
const report = await sender.getStats();
const source = [...report.values()].find(
  (s) => s.type === "media-source" && s.trackIdentifier === sender.track.id
);
console.log(source ? `Energie: ${source.totalAudioEnergy}` : "Keine Quellstatistik gefunden");
Energie: 0.8731

// Wichtig · Fallstricke

  • Browser-Kompatibilität: RTCAudioSourceStats einschließlich trackIdentifier wird vor allem von Chromium-basierten Browsern unterstützt. In Firefox und Safari fehlen media-source-Einträge für Audio ganz oder teilweise. Prüfe deshalb immer, ob die Eigenschaft vorhanden ist, bevor du sie nutzt.
  • Nicht mit stats.id verwechseln: Die ID des Statistikobjekts ist eine interne Kennung des Berichts und hat nichts mit der Track-ID zu tun.
  • Track-Austausch: Nach RTCRtpSender.replaceTrack() entsteht ein neuer Quelleintrag mit anderer trackIdentifier. Zwischengespeicherte Zuordnungen müssen dann aktualisiert werden.
  • Nur Sendeseite: Der Wert beschreibt lokale Quell-Tracks. Für empfangene Audio-Tracks nutzt du RTCInboundRtpStreamStats.trackIdentifier.
  • Datenschutz: Track-IDs sind zufällige UUIDs und enthalten keine Geräteinformationen. Trotzdem solltest du sie nicht unnötig an Server übertragen.