Signatur
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
"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);
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));
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);
// Wichtig · Fallstricke
- Einträge vom Typ
remote-outbound-rtpgibt 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 zuerststats.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
kindnicht allein aus, um Streams zuzuordnen. Bei mehreren Streams derselben Art (z. B. Kamera und Bildschirmfreigabe) brauchen Sie zusätzlichssrcoderlocalId, um den passendeninbound-rtp-Eintrag zu finden. - Die Eigenschaft ist nur lesbar. Ein
RTCStatsReportist ein Schnappschuss und wird nicht automatisch aktualisiert. Für aktuelle Werte müssen SiegetStats()erneut aufrufen.