VideoTrackGenerator
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Hinweis: Diese Funktion ist nur in Dedicated Web Workers verfügbar.
Die Schnittstelle VideoTrackGenerator der Insertable Streams for MediaStreamTrack API verfügt über eine WritableStream-Eigenschaft, die als Quelle für einen MediaStreamTrack dient, indem sie einen Stream von VideoFrame-Objekten als Eingabe verarbeitet.
Konstruktor
VideoTrackGenerator()-
Erstellt ein neues
VideoTrackGenerator-Objekt, dasVideoFrame-Objekte entgegennimmt.
Instanzeigenschaften
VideoTrackGenerator.muted-
Eine boolesche Eigenschaft, mit der die Erzeugung von Videoframes im Ausgabetrack vorübergehend angehalten oder fortgesetzt werden kann.
VideoTrackGenerator.trackSchreibgeschützt-
Der ausgegebene
MediaStreamTrack. VideoTrackGenerator.writableSchreibgeschützt-
Der
WritableStreamfür die Eingabe.
Beispiele
Das folgende Beispiel stammt aus dem Artikel Unbundling MediaStreamTrackProcessor and VideoTrackGenerator. Es überträgt einen MediaStreamTrack einer Kamera zur Verarbeitung an einen Worker. Der Worker erstellt eine Verarbeitungskette, die einen Sepiafilter auf die Videoframes anwendet und sie spiegelt. Die Verarbeitungskette endet in einem VideoTrackGenerator, dessen MediaStreamTrack zurückübertragen und wiedergegeben wird. Die Mediendaten durchlaufen die Transformation nun in Echtzeit außerhalb des Hauptthreads.
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = stream.getVideoTracks();
const worker = new Worker("worker.js");
worker.postMessage({ track }, [track]);
const { data } = await new Promise((r) => {
worker.onmessage = r;
});
video.srcObject = new MediaStream([data.track]);
worker.js:
onmessage = async ({ data: { track } }) => {
const vtg = new VideoTrackGenerator();
self.postMessage({ track: vtg.track }, [vtg.track]);
const { readable } = new MediaStreamTrackProcessor({ track });
await readable
.pipeThrough(new TransformStream({ transform }))
.pipeTo(vtg.writable);
};
Spezifikationen
| Spezifikation |
|---|
| MediaStreamTrack Insertable Media Processing using Streams> # videotrackgenerator> |