VideoFrame
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.
Want more browser support for this feature? Tell us why.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.
Die VideoFrame-Schnittstelle der Web Codecs API repräsentiert ein Einzelbild eines Videos.
VideoFrame ist ein übertragbares Objekt.
Konstruktor
VideoFrame()-
Erstellt ein neues
VideoFrame-Objekt.
Instanzeigenschaften
VideoFrame.formatSchreibgeschützt-
Gibt das Pixelformat des
VideoFramezurück. VideoFrame.codedWidthSchreibgeschützt-
Gibt die Breite des
VideoFramein Pixeln zurück, möglicherweise einschließlich nicht sichtbarer Auffüllung und bevor mögliche Anpassungen des Seitenverhältnisses berücksichtigt werden. VideoFrame.codedHeightSchreibgeschützt-
Gibt die Höhe des
VideoFramein Pixeln zurück, möglicherweise einschließlich nicht sichtbarer Auffüllung und bevor mögliche Anpassungen des Seitenverhältnisses berücksichtigt werden. VideoFrame.codedRectSchreibgeschützt-
Gibt ein
DOMRectReadOnlyzurück, dessen Breite und HöhecodedWidthundcodedHeightentsprechen. VideoFrame.visibleRectSchreibgeschützt-
Gibt ein
DOMRectReadOnlyzurück, das den sichtbaren Pixelbereich diesesVideoFramebeschreibt. VideoFrame.displayWidthSchreibgeschützt-
Gibt die Breite des
VideoFramebei der Anzeige nach Anpassung des Seitenverhältnisses zurück. VideoFrame.displayHeightSchreibgeschützt-
Gibt die Höhe des
VideoFramebei der Anzeige nach Anpassung des Seitenverhältnisses zurück. 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-
Gibt zurück, ob das
VideoFramehorizontal gespiegelt ist. VideoFrame.rotationSchreibgeschützt-
Gibt die auf das
VideoFrameangewendete Drehung im Uhrzeigersinn in Grad (0, 90, 180 oder 270) zurück. Beliebige Zahlen (auch negative) werden auf die nächste Vierteldrehung gerundet.
Instanzmethoden
VideoFrame.allocationSize()-
Gibt die Anzahl der Bytes zurück, die benötigt werden, um das
VideoFramegemäß den an die Methode übergebenen Optionen zu speichern. VideoFrame.copyTo()-
Kopiert den Inhalt des
VideoFramein einenArrayBuffer. VideoFrame.clone()-
Erstellt ein neues
VideoFrame-Objekt, das auf dieselbe Medienressource wie das Original verweist. VideoFrame.close()-
Löscht alle Zustände und gibt die Referenz auf die Medienressource frei.
VideoFrame.metadata()-
Gibt die mit dem
VideoFrameverknüpften Metadaten zurück.
Beschreibung
Ein VideoFrame-Objekt kann auf verschiedene Weise erstellt oder abgerufen werden. Der MediaStreamTrackProcessor zerlegt eine Medienspur in einzelne VideoFrame-Objekte.
Ein VideoFrame ist eine Bildquelle und verfügt über 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 Einzelbild aus einem Bild- oder Videoelement erstellt werden kann.
Ein zweiter Konstruktor ermöglicht es, ein VideoFrame aus seiner binären Pixeldarstellung in einem ArrayBuffer, einem TypedArray oder einem DataView zu erstellen.
Erstellte Einzelbilder können anschließend in eine Medienspur umgewandelt werden, beispielsweise mit der MediaStreamTrackGenerator-Schnittstelle, die aus einem Strom von Einzelbildern eine Medienspur erstellt.
Beispiele
Im folgenden Beispiel werden Einzelbilder von einem MediaStreamTrackProcessor zurückgegeben und anschließend codiert. Das vollständige Beispiel und weitere Informationen dazu finden Sie 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
| Spezifikation |
|---|
| WebCodecs> # videoframe-interface> |