Start · Sprachen · JavaScript · Referenz · RTCRemoteOutboundRtpStreamStats.kind

RTCRemoteOutboundRtpStreamStats.kind

Eigenschaft

Nur lesbarer String (<code>"audio"</code> oder <code>"video"</code>), der angibt, welche Art von Medien der entfernte ausgehende RTP-Stream überträgt.

seit JavaScript Baseline: Chrome, Edge, Firefox, Safari (WebRTC-St Kategorie: webapi

Signatur

RTCRemoteOutboundRtpStreamStats.kind

Beschreibung

Die Eigenschaft kind eines RTCRemoteOutboundRtpStreamStats-Objekts gibt an, ob der beschriebene RTP-Stream Audio oder Video enthält. Diese Statistik beschreibt den Stream, den der entfernte Teilnehmer an die lokale Seite sendet. Die Werte stammen aus RTCP-Senderberichten (Sender Reports), die die Gegenstelle schickt.

Sie erhalten solche Objekte, wenn Sie RTCPeerConnection.getStats(), RTCRtpReceiver.getStats() oder RTCRtpSender.getStats() aufrufen. Der Rückgabewert ist ein RTCStatsReport. Darin tragen Einträge dieses Typs type === "remote-outbound-rtp". Mit kind können Sie die Statistiken nach Medienart trennen, etwa um Audio- und Videokennzahlen getrennt anzuzeigen oder nur Video-Streams zu überwachen.

Der Wert entspricht der Eigenschaft kind des zugehörigen MediaStreamTrack. Er gehört zu den Grundfeldern, die alle RTP-Stream-Statistiken von RTCRtpStreamStats erben, zusammen mit ssrc, transportId und codecId.

Rückgabewert

Typ
string
Beschreibung
"audio", wenn der Stream Audio überträgt, oder "video", wenn er Video überträgt. Die Eigenschaft ist nur lesbar.

Beispiele

Remote-Outbound-Statistiken nach Medienart auflisten

// pc ist eine bereits verbundene RTCPeerConnection
const logRemoteOutbound = async (pc) => {
  const report = await pc.getStats();
  report.forEach((stats) => {
    if (stats.type === 'remote-outbound-rtp') {
      console.log(`${stats.kind}: SSRC ${stats.ssrc}, gesendete Pakete ${stats.packetsSent}`);
    }
  });
};

await logRemoteOutbound(pc);
audio: SSRC 12345678, gesendete Pakete 1520 video: SSRC 87654321, gesendete Pakete 9843

Nur Video-Statistiken eines Empfängers auswerten

const videoReceiver = pc.getReceivers().find((r) => r.track.kind === 'video');

const getRemoteVideoStats = async (receiver) => {
  const report = await receiver.getStats();
  for (const stats of report.values()) {
    if (stats.type === 'remote-outbound-rtp' && stats.kind === 'video') {
      return {
        bytesSent: stats.bytesSent,
        remoteTimestamp: stats.remoteTimestamp
      };
    }
  }
  return null;
};

console.log(await getRemoteVideoStats(videoReceiver));
{ bytesSent: 4812345, remoteTimestamp: 1718000000123 }

Statistiken periodisch nach Medienart gruppieren

const groupByKind = async (pc) => {
  const report = await pc.getStats();
  const grouped = { audio: [], video: [] };
  for (const stats of report.values()) {
    if (stats.type === 'remote-outbound-rtp') {
      grouped[stats.kind]?.push(stats);
    }
  }
  return grouped;
};

const timer = setInterval(async () => {
  const { audio, video } = await groupByKind(pc);
  console.log(`Audio-Streams: ${audio.length}, Video-Streams: ${video.length}`);
}, 2000);

// Später beenden: clearInterval(timer);
Audio-Streams: 1, Video-Streams: 1

// Wichtig · Fallstricke

  • Einträge vom Typ remote-outbound-rtp gibt es erst, wenn der erste RTCP-Senderbericht der Gegenstelle angekommen ist. Direkt nach dem Verbindungsaufbau können sie noch fehlen. Prüfen Sie deshalb immer zuerst stats.type.
  • In älteren Spezifikationsentwürfen und alten Browserversionen hieß das Feld mediaType. Wenn Sie ältere Browser unterstützen müssen, greifen Sie ersatzweise darauf zurück: stats.kind ?? stats.mediaType.
  • Werten Sie kind nicht allein aus, um Streams zuzuordnen. Bei mehreren Streams derselben Art (z. B. Kamera und Bildschirmfreigabe) brauchen Sie zusätzlich ssrc oder localId, um den passenden inbound-rtp-Eintrag zu finden.
  • Die Eigenschaft ist nur lesbar. Ein RTCStatsReport ist ein Schnappschuss und wird nicht automatisch aktualisiert. Für aktuelle Werte müssen Sie getStats() erneut aufrufen.