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 in Dedicated Web Workers verfügbar.
Das VideoFrame-Interface der Web Codecs API repräsentiert einen Frame eines Videos.
VideoFrame ist ein übertragbares Objekt.
Beschreibung
Ein VideoFrame-Objekt kann auf verschiedene Weise erstellt oder aufgerufen werden. Der MediaStreamTrackProcessor unterteilt eine Medienspur in einzelne VideoFrame-Objekte.
Ein VideoFrame ist eine Bildquelle und hat einen Konstruktor, der jede andere Canvas-Quelle akzeptiert (
ein SVGImageElement,
ein HTMLVideoElement,
ein HTMLCanvasElement,
ein ImageBitmap,
ein OffscreenCanvas,
oder ein anderes VideoFrame).
Das bedeutet, dass ein Frame von einem Bild- oder Videoelement erstellt werden kann.
Ein zweiter Konstruktor ermöglicht die Erstellung eines VideoFrame aus seiner binären Pixel-Darstellung in einem ArrayBuffer, einer TypedArray, oder einer DataView.
Erstellte Frames können dann in eine Mediendatei umgewandelt werden, zum Beispiel mit dem Interface MediaStreamTrackGenerator, das eine Mediendatei aus einem Stream von Frames erstellt.
Konstruktor
VideoFrame()-
Erstellt ein neues
VideoFrame-Objekt.
Instanz-Eigenschaften
VideoFrame.formatSchreibgeschützt-
Gibt das Pixelformat des
VideoFramezurück. VideoFrame.codedWidthSchreibgeschützt-
Gibt die Breite des
VideoFramein Pixeln zurück, einschließlich eventuell nicht sichtbarer Auffüllungen und vor möglichen Verhältnis-Anpassungen. VideoFrame.codedHeightSchreibgeschützt-
Gibt die Höhe des
VideoFramein Pixeln zurück, einschließlich eventuell nicht sichtbarer Auffüllungen und vor möglichen Verhältnis-Anpassungen. VideoFrame.codedRectSchreibgeschützt-
Gibt ein
DOMRectReadOnlyzurück, dessen Breite und Höhe mitcodedWidthundcodedHeightübereinstimmen. VideoFrame.visibleRectSchreibgeschützt-
Gibt ein
DOMRectReadOnlyzurück, das das sichtbare Rechteck der Pixel für diesesVideoFramebeschreibt. VideoFrame.displayWidthSchreibgeschützt-
Gibt die Breite des
VideoFramezurück, wenn es nach Anwendung der Seitenverhältnis-Anpassungen angezeigt wird. VideoFrame.displayHeightSchreibgeschützt-
Gibt die Höhe des
VideoFramezurück, wenn es nach Anwendung der Seitenverhältnisanpassungen angezeigt wird. VideoFrame.durationSchreibgeschützt-
Gibt eine Ganzzahl zurück, die die Dauer des Videos in Mikrosekunden angibt.
VideoFrame.timestampSchreibgeschützt-
Gibt eine Ganzzahl zurück, die den Zeitstempel des Videos in Mikrosekunden angibt.
VideoFrame.colorSpaceSchreibgeschützt-
Gibt ein
VideoColorSpace-Objekt zurück. VideoFrame.flipSchreibgeschützt Experimentell-
Gibt zurück, ob das
VideoFramehorizontal gespiegelt ist. VideoFrame.rotationSchreibgeschützt Experimentell-
Gibt 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 einem MediaStreamTrackProcessor zurückgegeben und dann codiert. Sehen Sie sich das vollständige Beispiel an und lesen Sie mehr darüber im Artikel Videoverarbeitung 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> |
Browser-Kompatibilität
Loading…