RTCStatsReport
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 2020.
* Some parts of this feature may have varying levels of support.
Das RTCStatsReport
-Interface der WebRTC API stellt einen Statistikbericht für eine RTCPeerConnection
, einen RTCRtpSender
oder einen RTCRtpReceiver
bereit.
Eine Instanz von RTCStatsReport
ist ein schreibgeschütztes Map-ähnliches Objekt, in dem jeder Schlüssel ein Bezeichner für ein Objekt ist, für das Statistiken gemeldet werden, und der entsprechende Wert ein Wörterbuchobjekt ist, das die Statistiken bereitstellt.
Instanzeigenschaften
RTCStatsReport.size
-
Gibt die Anzahl der Elemente im
RTCStatsReport
-Objekt zurück.
Instanzmethoden
RTCStatsReport.entries()
-
Gibt ein neues Iterator-Objekt zurück, das ein zweigliedriges Array aus
[id, statistik-wörterbuch]
für jedes Element imRTCStatsReport
-Objekt in Einfügereihenfolge enthält. RTCStatsReport.forEach()
-
Ruft
callbackFn
einmal für jedes imRTCStatsReport
-Objekt vorhandene Schlüssel-Wert-Paar in Einfügereihenfolge auf. Wenn einthisArg
-Parameter anforEach
übergeben wird, wird er alsthis
-Wert für jeden Rückruf verwendet. RTCStatsReport.get()
-
Gibt das Statistik-Wörterbuch zurück, das mit der übergebenen
id
verknüpft ist, oderundefined
, wenn keines vorhanden ist. RTCStatsReport.has()
-
Gibt einen booleschen Wert zurück, der angibt, ob das
RTCStatsReport
ein mit der angegebenenid
verknüpftes Statistik-Wörterbuch enthält. RTCStatsReport.keys()
-
Gibt ein neues Iterator-Objekt zurück, das die Schlüssel (IDs) für jedes Element im
RTCStatsReport
-Objekt in Einfügereihenfolge enthält. RTCStatsReport.values()
-
Gibt ein neues Iterator-Objekt zurück, das die Werte (Statistikobjek) für jedes Element im
RTCStatsReport
-Objekt in Einfügereihenfolge enthält. RTCStatsReport[Symbol.iterator]()
-
Gibt ein neues Iterator-Objekt zurück, das ein zweigliedriges Array aus
[id, statistik-wörterbuch]
für jedes Element imRTCStatsReport
-Objekt in Einfügereihenfolge enthält.
Beschreibung
Ein Promise
, das sich zu einem RTCStatsReport
auflöst, wird von den Methoden RTCRtpReceiver.getStats()
, RTCRtpSender.getStats()
und RTCPeerConnection.getStats()
zurückgegeben.
Ein Aufruf von getStats()
auf einer RTCPeerConnection
ermöglicht Ihnen anzugeben, ob Sie ausgehende Statistiken, eingehende Statistiken oder Statistiken für die gesamte Verbindung erhalten möchten.
Die getStats()
-Versionen von RTCRtpReceiver
und RTCRtpSender
geben nur jeweils eingehende bzw. ausgehende Statistiken zurück.
Der Statistikbericht ist ein schreibgeschütztes Map-ähnliches Objekt: ein geordnetes Wörterbuch, bei dem die Eigenschaften id
-Strings sind, die eindeutig das WebRTC-Objekt identifizieren, das überprüft wurde, um einen bestimmten Satz von Statistiken zu erzeugen, und der Wert ein Wörterbuchobjekt ist, das diese Statistiken enthält.
Ein RTCStatsReport
kann iteriert und auf dieselbe Weise wie eine schreibgeschützte Map
verwendet werden.
Der Bericht kann viele verschiedene Kategorien von Statistiken enthalten, einschließlich eingehender und ausgehender Statistiken sowohl für die aktuelle als auch für die entfernte Seite der Peer-Verbindung, Informationen über verwendete Codecs, Zertifikate und Medien, und so weiter.
Jede Statistik-Kategorie wird in einem anderen Typ von Statistik-Wörterbuchobjekt bereitgestellt, das an seiner type
-Eigenschaft erkannt werden kann.
Allgemeine Instanzeigenschaften
Alle Wörterbuchtypen haben die folgenden Eigenschaften:
id
-
Ein String, der das Objekt eindeutig identifiziert, das zur Erstellung des Satzes von Statistiken überwacht wurde. Dieser Wert bleibt für (mindestens) die Lebensdauer der Verbindung über Berichte hinweg bestehen. Beachten Sie jedoch, dass bei einigen Statistiken die ID zwischen Browsern und für nachfolgende Verbindungen, selbst zu demselben Peer, variieren kann.
timestamp
-
Ein hochauflösendes Zeitstempelobjekt (
DOMHighResTimeStamp
), das den Zeitpunkt angibt, zu dem die Probe genommen wurde. Viele gemeldete Statistiken sind kumulative Werte; der Zeitstempel ermöglicht es, Raten und Durchschnitte zwischen zwei Berichten bei jeder gewünschten Berichterstellungsrate zu berechnen. type
-
Ein String mit einem Wert, der den Typ der Statistiken angibt, die das Objekt enthält, wie z.B.
candidate-pair
,inbound-rtp
,certificate
, und so weiter. Die Statistiktypen und deren entsprechende Objekte sind unten aufgeführt.
Benutzer iterieren typischerweise ein RTCStatsReport
, indem sie eine forEach()
oder eine for...of
-Schleife verwenden und die interessierenden Statistiken anhand der type
-Eigenschaft auswählen.
Sobald ein bestimmtes Statistikobjekt anhand seines type
identifiziert wurde, kann die id
-Eigenschaft anschließend mit get()
verwendet werden, um denselben Statistikbericht zu einem anderen Zeitpunkt zu erhalten.
Der Zeitstempel kann verwendet werden, um Durchschnittswerte für Statistiken zu berechnen, die sich über die Lebensdauer einer Verbindung ansammeln.
Die Statistiktypen
Die Statistik-type
-Werte und ihre entsprechenden Wörterbücher sind unten aufgeführt.
Typ | Wörterbuch | Beschreibung |
---|---|---|
candidate-pair |
RTCIceCandidatePairStats |
Statistiken, die die Änderung von einem RTCIceTransport zu einem anderen beschreiben, wie beispielsweise während eines ICE-Neustarts. |
certificate |
RTCCertificateStats |
Statistiken über ein Zertifikat, das von einem RTCIceTransport verwendet wird. |
codec |
RTCCodecStats |
Statistiken über einen bestimmten Codec, der von über diese Verbindung gesendeten oder empfangenen Streams verwendet wird. |
data-channel |
RTCDataChannelStats |
Statistiken in Bezug auf einen RTCDataChannel in der Verbindung. |
inbound-rtp |
RTCInboundRtpStreamStats |
Statistiken, die den Zustand eines der eingehenden Datenströme der Verbindung beschreiben. |
local-candidate |
RTCIceCandidateStats |
Statistiken über einen lokalen ICE-Kandidaten, der mit den RTCIceTransport s der Verbindung verknüpft ist. |
media-source |
RTCAudioSourceStats oder RTCVideoSourceStats |
Statistiken über das von dem MediaStreamTrack produzierte Medium, das an einen RTP-Sender angehängt ist. Das Wörterbuch, dem dieser Schlüssel zugeordnet ist, hängt von der kind des Tracks ab. |
outbound-rtp |
RTCOutboundRtpStreamStats |
Statistiken, die den Zustand eines der ausgehenden Datenströme auf dieser Verbindung beschreiben. |
peer-connection |
RTCPeerConnectionStats |
Statistiken, die den Zustand der RTCPeerConnection beschreiben. |
remote-candidate |
RTCIceCandidateStats |
Statistiken über einen entfernten ICE-Kandidaten, der mit den RTCIceTransport s der Verbindung verknüpft ist. |
remote-inbound-rtp |
RTCRemoteInboundRtpStreamStats |
Statistiken, die den Zustand des eingehenden Datenstroms aus der Perspektive des entfernten Peers beschreiben. |
remote-outbound-rtp |
RTCRemoteOutboundRtpStreamStats |
Statistiken, die den Zustand des ausgehenden Datenstroms aus der Perspektive des entfernten Peers beschreiben. |
transport |
RTCTransportStats |
Statistiken über ein Transportmittel, das von der Verbindung verwendet wird. |
Beispiele
>Bericht von einer RTCPeerConnection mit einer forEach-Schleife iterieren
Dieses Beispiel zeigt, wie Sie videobezogene Statistiken für das lokale RTCRtpReceiver
, das für den Empfang von gestreamten Medien verantwortlich ist, protokollieren können.
Angenommen, eine Variable myPeerConnection
ist eine Instanz von RTCPeerConnection
, verwendet der Code await
, um auf den Statistikbericht zu warten, und iteriert dann mit RTCStatsReport.forEach()
.
Anschließend werden die Wörterbücher nur für die Berichte gefiltert, die den type
von inbound-rtp
und kind
von video
haben.
const stats = await myPeerConnection.getStats();
stats.forEach((report) => {
if (report.type === "inbound-rtp" && report.kind === "video") {
// Log the frame rate
console.log(report.framesPerSecond);
}
});
Bericht von einem RTCRtpSender mit einer for...of-Schleife iterieren
Dieses Beispiel zeigt, wie Sie die ausgehenden Statistiken von einem RTCRtpSender
iterieren können.
Der Code folgt einem ähnlichen Muster wie das vorherige Beispiel, jedoch wird er mit einer for...of
-Schleife auf den RTCStatsReport.values()
iteriert und auf den type
von outbound-rtp
gefiltert.
Es wird davon ausgegangen, dass Sie bereits ein RTCRtpSender
-Objekt namens "sender" haben.
const stats = await sender.getStats();
for (const stat of stats.values()) {
if (stat.type !== "outbound-rtp") continue;
Object.keys(stat).forEach((statName) => {
console.log(`${statName}: ${stat[statName]}`);
});
}
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers> # rtcstatsreport-object> |
Browser-Kompatibilität
Loading…