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.

Das VideoTrackGenerator-Interface der Insertable Streams for MediaStreamTrack API hat eine WritableStream-Eigenschaft, die als Quelle eines MediaStreamTrack dient, indem sie einen Stream von VideoFrames als Eingabe verarbeitet.

Konstruktor

VideoTrackGenerator() Experimentell

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

Instanzeigenschaften

VideoTrackGenerator.muted Experimentell

Eine Boole'sche Eigenschaft, um die Erzeugung von Videoframes im Ausgabetrack vorübergehend zu stoppen oder fortzusetzen.

VideoTrackGenerator.track Experimentell

Der Ausgabe-MediaStreamTrack.

VideoTrackGenerator.writable Experimentell

Der Eingabe-WritableStream.

Beispiele

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

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