RTCEncodedVideoFrame: getMetadata()-Methode
Baseline
2023
Newly available
Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.
Die getMetadata()-Methode der RTCEncodedVideoFrame-Schnittstelle gibt ein Objekt zurück, das die mit dem Frame verknüpften Metadaten enthält.
Dies umfasst Informationen über den Frame, wie seine Größe, Video-Codierung, andere Frames, die zur Konstruktion eines vollständigen Bildes benötigt werden, Zeitstempel und weitere Informationen.
Syntax
getMetadata()
Parameter
Keine.
Rückgabewert
Ein Objekt mit den folgenden Eigenschaften:
contributingSources-
Ein
Arrayvon Quellen (ssrc), die zum Frame beigetragen haben. Betrachten Sie den Fall einer Konferenzanwendung, die Audio und Video von mehreren Benutzern kombiniert. DiesynchronizationSourcewürde die ssrc der Anwendung enthalten, währendcontributingSourcesdie ssrc-Werte aller einzelnen Video- und Audioquellen enthalten würde. dependencies-
Ein
Arrayvon positiven ganzen Zahlen, die die frameIds von Frames anzeigen, auf die dieser Frame angewiesen ist. Für einen Schlüssel-Frame wird dies leer sein, da ein Schlüssel-Frame alle Informationen enthält, die benötigt werden, um das Bild zu konstruieren. Für einen Delta-Frame werden alle Frames aufgeführt, die zur Darstellung dieses Frames benötigt werden. Der Typ des Frames kann mitRTCEncodedVideoFrame.typeermittelt werden. frameId-
Ein positiver Ganzzahlenwert, der die ID dieses Frames angibt.
height-
Eine positive Ganzzahl, die die Höhe des Frames angibt. Der Maximalwert beträgt 65535.
mimeType-
Ein String, der den MIME-Typ des verwendeten Codecs enthält, wie zum Beispiel "video/VP8".
payloadType-
Ein positiver Ganzzahlenwert im Bereich von 0 bis 127, der das Format der RTP-Nutzlast beschreibt. Die Zuordnungen von Werten zu Formaten sind in RFC3550 definiert.
receiveTime-
Ein
DOMHighResTimeStamp, der den Zeitstempel des letzten empfangenen Pakets eines eingehenden Frames (von einemRTCRtpReceiver) angibt, das zur Erzeugung dieses Medien-Frames verwendet wurde, relativ zuPerformance.timeOrigin. rtpTimestamp-
Eine positive ganze Zahl, die den Abtastzeitpunkt des ersten Oktetts im RTP-Datenpaket widerspiegelt (siehe RFC 3550).
spatialIndex-
Eine positive ganze Zahl, die den räumlichen Index des Frames angibt. Einige Codecs ermöglichen die Erzeugung von Schichten von Frames mit unterschiedlichen Auflösungen. Frames in höheren Schichten können selektiv weggelassen werden, um bei Bedarf die Bitrate zu reduzieren und dennoch eine akzeptable Videoqualität beizubehalten.
synchronizationSource-
Ein positiver Ganzzahlenwert, der die Synchronisationsquelle ("ssrc") des Stroms von RTP-Paketen angibt, die durch diesen kodierten Video-Frame beschrieben werden. Eine Quelle könnte eine Kamera oder ein Mikrofon sein oder eine Art Mixer-App, die mehrere Quellen kombiniert. Alle Pakete von derselben Quelle teilen dieselbe Zeitquelle und Sequenzraum und können daher relativ zueinander geordnet werden. Beachten Sie, dass zwei Frames mit demselben Wert sich auf dieselbe Quelle beziehen (für weitere Informationen siehe
RTCInboundRtpStreamStats.ssrc). temporalIndex-
Eine positive ganze Zahl, die den zeitlichen Index des Frames angibt. Einige Codecs gruppieren Frames in Schichten, basierend darauf, ob das Weglassen eines Frames die Dekodierung anderer verhindert. Frames in höheren Schichten können selektiv weggelassen werden, um bei Bedarf die Bitrate zu reduzieren und dennoch eine akzeptable Videoqualität zu gewährleisten.
width-
Eine positive Ganzzahl, die die Breite des Frames angibt. Der Maximalwert beträgt 65535.
Beispiele
Diese WebRTC Encoded Transform-Implementierung zeigt, wie Sie die Frame-Metadaten in einer transform()-Funktion abrufen und protokollieren können.
addEventListener("rtctransform", (event) => {
const transform = new TransformStream({
async transform(encodedFrame, controller) {
// Get the metadata and log
const frameMetaData = encodedFrame.getMetadata();
console.log(frameMetaData);
// Enqueue the frame without modifying
controller.enqueue(encodedFrame);
},
});
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
Das resultierende Objekt von einer lokalen Webcam könnte wie das unten gezeigte aussehen. Beachten Sie, dass es keine beitragenden Quellen gibt, da nur eine Quelle vorhanden ist.
{
"contributingSources": [],
"mimeType": "video/VP8",
"payloadType": 96,
"rtpTimestamp": 2503280194,
"synchronizationSource": 1736709460,
"dependencies": [],
"frameId": 1,
"height": 240,
"spatialIndex": 0,
"temporalIndex": 0,
"width": 320
}
Spezifikationen
| Specification |
|---|
| WebRTC Encoded Transform> # dom-rtcencodedvideoframe-getmetadata> |
Browser-Kompatibilität
Loading…