VideoTrackGenerator

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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 VideoTrackGenerator-Schnittstelle 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 VideoFrames als Eingabe konsumiert.

Konstruktor

VideoTrackGenerator() Experimentell

Erstellt ein neues VideoTrackGenerator-Objekt, das VideoFrame-Objekte akzeptiert.

Instanz-Eigenschaften

VideoTrackGenerator.muted Experimentell

Eine Boolesche Eigenschaft, um die Erzeugung von Videobildern im Ausgabetrack vorübergehend zu unterbrechen oder fortzusetzen.

VideoTrackGenerator.track Experimentell

Der Ausgabestream MediaStreamTrack.

VideoTrackGenerator.writable Experimentell

Der Eingabe- WritableStream.

Beispiele

Das folgende Beispiel stammt aus dem Artikel Unbundling MediaStreamTrackProcessor and VideoTrackGenerator. Es überträgt eine Kamera- MediaStreamTrack an einen Worker zur Verarbeitung. Der Worker erstellt eine Pipeline, die einen Sepia-Ton-Filter auf die Videobilder anwendet und diese spiegelt. Die Pipeline endet in einem VideoTrackGenerator, dessen MediaStreamTrack zurückübertragen und abgespielt wird. Die Medien fließen nun in Echtzeit durch die Transformation abseits des Hauptthreads.

js
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:

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

Specification
MediaStreamTrack Insertable Media Processing using Streams
# videotrackgenerator

Browser-Kompatibilität

Siehe auch