Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
VideoFrame
Baseline 2024 *Newly available
Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist inDedicated Web Workers verfügbar.
DasVideoFrame-Interface derWeb Codecs API repräsentiert einen Frame eines Videos.
VideoFrame ist einübertragbares Objekt.
In diesem Artikel
Beschreibung
EinVideoFrame-Objekt kann auf verschiedene Weise erstellt oder aufgerufen werden. DerMediaStreamTrackProcessor unterteilt eine Medienspur in einzelneVideoFrame-Objekte.
EinVideoFrame ist eine Bildquelle und hat einen Konstruktor, der jede andere Canvas-Quelle akzeptiert (einSVGImageElement,einHTMLVideoElement,einHTMLCanvasElement,einImageBitmap,einOffscreenCanvas,oder ein anderesVideoFrame).Das bedeutet, dass ein Frame von einem Bild- oder Videoelement erstellt werden kann.
Ein zweiter Konstruktor ermöglicht die Erstellung einesVideoFrame aus seiner binären Pixel-Darstellung in einemArrayBuffer, einerTypedArray, oder einerDataView.
Erstellte Frames können dann in eine Mediendatei umgewandelt werden, zum Beispiel mit dem InterfaceMediaStreamTrackGenerator, das eine Mediendatei aus einem Stream von Frames erstellt.
Konstruktor
VideoFrame()Erstellt ein neues
VideoFrame-Objekt.
Instanz-Eigenschaften
VideoFrame.formatSchreibgeschütztGibt das Pixelformat des
VideoFramezurück.VideoFrame.codedWidthSchreibgeschütztGibt die Breite des
VideoFramein Pixeln zurück, einschließlich eventuell nicht sichtbarer Auffüllungen und vor möglichen Verhältnis-Anpassungen.VideoFrame.codedHeightSchreibgeschütztGibt die Höhe des
VideoFramein Pixeln zurück, einschließlich eventuell nicht sichtbarer Auffüllungen und vor möglichen Verhältnis-Anpassungen.VideoFrame.codedRectSchreibgeschütztGibt ein
DOMRectReadOnlyzurück, dessen Breite und Höhe mitcodedWidthundcodedHeightübereinstimmen.VideoFrame.visibleRectSchreibgeschütztGibt ein
DOMRectReadOnlyzurück, das das sichtbare Rechteck der Pixel für diesesVideoFramebeschreibt.VideoFrame.displayWidthSchreibgeschütztGibt die Breite des
VideoFramezurück, wenn es nach Anwendung derSeitenverhältnis-Anpassungen angezeigt wird.VideoFrame.displayHeightSchreibgeschütztGibt die Höhe des
VideoFramezurück, wenn es nach Anwendung der Seitenverhältnisanpassungen angezeigt wird.VideoFrame.durationSchreibgeschütztGibt eine Ganzzahl zurück, die die Dauer des Videos in Mikrosekunden angibt.
VideoFrame.timestampSchreibgeschütztGibt eine Ganzzahl zurück, die den Zeitstempel des Videos in Mikrosekunden angibt.
VideoFrame.colorSpaceSchreibgeschütztGibt ein
VideoColorSpace-Objekt zurück.VideoFrame.flipSchreibgeschütztExperimentellGibt zurück, ob das
VideoFramehorizontal gespiegelt ist.VideoFrame.rotationSchreibgeschütztExperimentellGibt die Drehung (0, 90, 180 oder 270) im Uhrzeigersinn angewendet auf das
VideoFramezurück. Beliebige Zahlen (einschließlich negativer) werden auf die nächste Vierteldrehung gerundet.
Instanz-Methoden
VideoFrame.allocationSize()Gibt die Anzahl der Bytes zurück, die erforderlich sind, um das
VideoFrameentsprechend der durch die Methode übergebenen Optionen zu halten.VideoFrame.copyTo()Kopiert den Inhalt des
VideoFramein einenArrayBuffer.VideoFrame.clone()Erstellt ein neues
VideoFrame-Objekt mit Verweis auf die gleiche Medienquelle wie das Original.VideoFrame.close()Löscht alle Zustände und gibt den Verweis auf die Medienquelle frei.
Beispiele
Im folgenden Beispiel werden Frames aus einemMediaStreamTrackProcessor zurückgegeben und dann codiert. Sehen Sie sich das vollständige Beispiel an und lesen Sie mehr darüber im ArtikelVideoverarbeitung mit WebCodecs.
let frameCounter = 0;const track = stream.getVideoTracks()[0];const mediaProcessor = new MediaStreamTrackProcessor(track);const reader = mediaProcessor.readable.getReader();while (true) { const result = await reader.read(); if (result.done) break; let frame = result.value; if (encoder.encodeQueueSize > 2) { // Too many frames in flight, encoder is overwhelmed // let's drop this frame. frame.close(); } else { frameCounter++; const insertKeyframe = frameCounter % 150 === 0; encoder.encode(frame, { keyFrame: insertKeyframe }); frame.close(); }}Spezifikationen
| Specification |
|---|
| WebCodecs> # videoframe-interface> |