Start · Sprachen · JavaScript · Referenz · RTCRemoteInboundRtpStreamStats.type

RTCRemoteInboundRtpStreamStats.type

Eigenschaft

String-Eigenschaft mit dem festen Wert <code>"remote-inbound-rtp"</code>, die ein Statistikobjekt als Empfangsbericht der Gegenstelle für einen lokal gesendeten RTP-Stream kennzeichnet.

seit JavaScript Baseline: Chrome, Edge, Firefox, Safari (neuere Ve Kategorie: webapi

Signatur

RTCRemoteInboundRtpStreamStats.type

Beschreibung

Die Eigenschaft type eines RTCRemoteInboundRtpStreamStats-Objekts enthält immer den String "remote-inbound-rtp". Damit lässt sich dieser Statistiktyp in der RTCStatsReport-Map eindeutig von anderen Einträgen wie "outbound-rtp", "inbound-rtp" oder "candidate-pair" unterscheiden.

Ein remote-inbound-rtp-Eintrag beschreibt, wie die Gegenstelle einen von Ihnen gesendeten RTP-Stream empfängt. Die Daten stammen aus RTCP-Receiver-Reports (RR) der Gegenstelle und enthalten unter anderem packetsLost, fractionLost, jitter und roundTripTime. Damit eignet sich der Typ gut, um die Verbindungsqualität aus Sicht des Empfängers zu überwachen.

Üblicherweise iteriert man über das Ergebnis von RTCPeerConnection.getStats() oder RTCRtpSender.getStats() und filtert nach stats.type === "remote-inbound-rtp". Über localId gelangt man zum zugehörigen outbound-rtp-Eintrag.

Rückgabewert

Typ
string
Beschreibung
Immer der String "remote-inbound-rtp" (ein Wert aus der Aufzählung RTCStatsType).

Beispiele

Remote-Inbound-Statistiken aus dem Report filtern

const pc = new RTCPeerConnection();
// ... Verbindung aufbauen und Tracks hinzufügen ...

const logRemoteInbound = async () => {
  const report = await pc.getStats();
  report.forEach((stats) => {
    if (stats.type === "remote-inbound-rtp") {
      console.log(stats.type, stats.kind, stats.roundTripTime);
    }
  });
};

setInterval(logRemoteInbound, 2000);
remote-inbound-rtp video 0.042

Paketverlust pro gesendetem Stream überwachen

const checkSenderQuality = async (sender) => {
  const report = await sender.getStats();
  for (const stats of report.values()) {
    if (stats.type !== "remote-inbound-rtp") continue;
    const lossPercent = ((stats.fractionLost ?? 0) * 100).toFixed(1);
    console.log(`SSRC ${stats.ssrc}: ${lossPercent} % Verlust, RTT ${stats.roundTripTime ?? "–"} s`);
  }
};

for (const sender of pc.getSenders()) {
  checkSenderQuality(sender);
}
SSRC 123456789: 1.2 % Verlust, RTT 0.038 s

Zugehörigen outbound-rtp-Eintrag über localId finden

const report = await pc.getStats();
const remoteInbound = [...report.values()].filter((s) => s.type === "remote-inbound-rtp");

for (const remote of remoteInbound) {
  const outbound = report.get(remote.localId);
  console.log(outbound?.type, outbound?.packetsSent, "gesendet /", remote.packetsLost, "verloren");
}
outbound-rtp 5230 gesendet / 12 verloren

// Wichtig · Fallstricke

  • Die Eigenschaft ist schreibgeschützt und hat immer denselben Wert. Sinnvoll ist sie nur als Filterkriterium innerhalb eines RTCStatsReport.
  • Nicht mit "inbound-rtp" verwechseln: inbound-rtp beschreibt Streams, die Sie empfangen, remote-inbound-rtp dagegen die Sicht der Gegenstelle auf Streams, die Sie senden.
  • Einträge tauchen erst auf, wenn die Gegenstelle einen RTCP-Receiver-Report geschickt hat. Direkt nach dem Verbindungsaufbau kann der Typ daher noch fehlen, und Werte wie roundTripTime können undefined sein.
  • Browser unterstützen nicht alle Felder gleich gut. Ältere Versionen haben teilweise veraltete Typnamen verwendet (z. B. "inboundrtp" in alten Firefox-Versionen). Deshalb Feldzugriffe mit ?./?? absichern.
  • Kurze Abfrage-Intervalle bei getStats() (unter ca. 1 s) bringen kaum Gewinn, weil RTCP-Reports nur etwa alle paar Sekunden eintreffen.