VideoFrame: VideoFrame() Konstruktor
Baseline
2024
*
Neu verfügbar
Seit September 2024 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.
Der VideoFrame() Konstruktor erstellt ein neues VideoFrame-Objekt, das einen Frame eines Videos darstellt.
Syntax
new VideoFrame(image)
new VideoFrame(image, options)
new VideoFrame(data, options)
Parameter
Der erste Typ des Konstruktors erstellt ein neues VideoFrame aus einem Bild. Seine Parameter sind:
image-
Ein Bild, das die Bilddaten für das neue
VideoFrameenthält. Es kann sich um eines der folgenden Objekte handeln: einSVGImageElement, einHTMLVideoElement, einHTMLCanvasElement, einImageBitmap, einOffscreenCanvasoder ein anderesVideoFrame. optionsOptional-
Ein Objekt, das Folgendes enthält:
alphaOptional-
Ein String, der beschreibt, wie der User-Agent beim Umgang mit Alphakanälen vorgehen soll. Der Standardwert ist "keep".
"keep": Gibt an, dass der User-Agent die Alphakanaldaten beibehalten soll."discard": Gibt an, dass der User-Agent die Alphakanaldaten ignorieren oder entfernen soll.
displayHeightOptional-
Die Höhe des
VideoFrame, wenn es angezeigt wird, nachdem Seitenverhältnis-Anpassungen vorgenommen wurden. displayWidthOptional-
Die Breite des
VideoFrame, wenn es angezeigt wird, nachdem Seitenverhältnis-Anpassungen vorgenommen wurden. durationOptional-
Ein Integer, der die Dauer des Frames in Mikrosekunden darstellt.
flipOptional-
Ein Boolean. Wenn
true, wird eine horizontale Spiegelung angewendet. Standardmäßigfalse. metadataOptional-
Ein Objekt, das Metadaten beschreibt, die die Video-Frame-Daten beschreiben, spezifiziert durch das WebCodecs VideoFrame Metadata Registry, das die folgenden Eigenschaften enthalten kann:
rtpTimestampOptional-
Der RTP-Zeitstempel des entsprechenden kodierten Frames. Nur Video-Frames, die aus WebRTC-Quellen stammen, sollten
rtpTimestamp-Metadaten gesetzt haben.
Hinweis: Die
metadataeines Video-Frames können mit der MethodeVideoFrame.metadata()zurückgegeben werden. rotationOptional-
Ein Integer, der die Rotation (0, 90, 180 oder 270) in Grad im Uhrzeigersinn darstellt. Standardmäßig
0. Beliebige Zahlen (einschließlich negativer) werden auf die nächste Vierteldrehung gerundet. timestamp-
Ein Integer, der den Zeitstempel des Frames in Mikrosekunden darstellt.
visibleRectOptional-
Ein Objekt, das das sichtbare Rechteck des
VideoFramedarstellt und Folgendes enthält:
Der zweite Typ des Konstruktors erstellt ein neues VideoFrame aus einem ArrayBuffer. Seine Parameter sind:
data-
Ein
ArrayBuffer, einTypedArrayoder einDataView, das die Daten für das neueVideoFrameenthält. options-
Ein Objekt, das Folgendes enthält:
codedHeight-
Höhe des
VideoFramein Pixeln, möglicherweise einschließlich nicht sichtbarer Polsterung und bevor eventuelle Verhältnis-Anpassungen berücksichtigt werden. codedWidth-
Breite des
VideoFramein Pixeln, möglicherweise einschließlich nicht sichtbarer Polsterung und bevor eventuelle Verhältnis-Anpassungen berücksichtigt werden. colorSpace-
Ein Objekt, das den Farbraum des
VideoFramedarstellt und Folgendes enthält:primaries-
Ein String, der die Farbprimaries des Videos darstellt und auf der Seite für die Eigenschaft
VideoColorSpace.primariesbeschrieben wird. transfer-
Ein String, der die Transferfunktion des Video-Farbraums darstellt und auf der Seite für die Eigenschaft
VideoColorSpace.transferbeschrieben wird. matrix-
Ein String, der die Farbraummatrix des Videos darstellt und auf der Seite für die Eigenschaft
VideoColorSpace.matrixbeschrieben wird. fullRange-
Ein Boolean. Wenn
true, zeigt an, dass vollumfängliche Farbwerte verwendet werden.
displayHeightOptional-
Die Höhe des
VideoFrame, wenn es angezeigt wird, nachdem Seitenverhältnis-Anpassungen vorgenommen wurden. displayWidthOptional-
Die Breite des
VideoFrame, wenn es angezeigt wird, nachdem Seitenverhältnis-Anpassungen vorgenommen wurden. durationOptional-
Ein Integer, der die Dauer des Frames in Mikrosekunden darstellt.
flipOptional-
Ein Boolean. Wenn
true, wird eine horizontale Spiegelung angewendet. Standardmäßigfalse. format-
Ein String, der das Pixel-Format des Videos darstellt. Einer der folgenden Strings, die auf der Seite für die Eigenschaft
formatvollständig beschrieben sind:"I420""I420A""I422""I444""NV12""RGBA""RGBX""BGRA""BGRX"
layoutOptional-
Eine Liste, die die folgenden Werte für jede Ebene im
VideoFrameenthält:offset-
Ein Integer, der den Versatz in Bytes darstellt, ab dem die jeweilige Ebene beginnt.
stride-
Ein Integer, der die Anzahl von Bytes darstellt, einschließlich der Polsterung, die von jeder Zeile der Ebene verwendet wird. Ebenen dürfen sich nicht überlappen. Wenn kein
layoutangegeben ist, werden die Ebenen eng gepackt.
metadataOptional-
Ein Objekt, das Metadaten beschreibt, die die Video-Frame-Daten beschreiben, spezifiziert durch das WebCodecs VideoFrame Metadata Registry, das die folgenden Eigenschaften enthalten kann:
rtpTimestampOptional-
Der RTP-Zeitstempel des entsprechenden kodierten Frames.
rotationOptional-
Ein Integer, der die Rotation (0, 90, 180 oder 270) in Grad im Uhrzeigersinn darstellt. Standardmäßig
0. Beliebige Zahlen (einschließlich negativer) werden auf die nächste Vierteldrehung gerundet. timestamp-
Ein Integer, der den Zeitstempel des Frames in Mikrosekunden darstellt.
transfer-
Ein Array von
ArrayBuffers, dieVideoFrameabtrennen und übernehmen wird. Wenn das Array denArrayBufferenthält, derdataunterstützt, wirdVideoFramedieses Puffer direkt verwenden, anstatt davon zu kopieren. visibleRectOptional-
Ein Objekt, das das sichtbare Rechteck des
VideoFramedarstellt und Folgendes enthält:
Beispiele
Die folgenden Beispiele stammen aus dem Artikel Videoverarbeitung mit WebCodecs. In diesem ersten Beispiel wird ein VideoFrame aus einer Leinwand erstellt.
const cnv = document.createElement("canvas");
// draw something on the canvas
// …
const frameFromCanvas = new VideoFrame(cnv, { timestamp: 0 });
Im folgenden Beispiel wird ein VideoFrame aus einem TypedArray erstellt.
const pixelSize = 4;
const init = {
timestamp: 0,
codedWidth: 320,
codedHeight: 200,
format: "RGBA",
};
const data = new Uint8Array(init.codedWidth * init.codedHeight * pixelSize);
for (let x = 0; x < init.codedWidth; x++) {
for (let y = 0; y < init.codedHeight; y++) {
const offset = (y * init.codedWidth + x) * pixelSize;
data[offset] = 0x7f; // Red
data[offset + 1] = 0xff; // Green
data[offset + 2] = 0xd4; // Blue
data[offset + 3] = 0x0ff; // Alpha
}
}
init.transfer = [data.buffer];
const frame = new VideoFrame(data, init);
Spezifikationen
| Spezifikation |
|---|
| WebCodecs> # dom-videoframe-videoframe> |