Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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, das VideoFrame-Objekte entgegennimmt.

Instanzeigenschaften

VideoTrackGenerator.muted

Eine boolesche Eigenschaft, mit der die Erzeugung von Videoframes im Ausgabetrack vorübergehend angehalten oder fortgesetzt werden kann.

VideoTrackGenerator.track Schreibgeschützt

Der ausgegebene MediaStreamTrack.

VideoTrackGenerator.writable Schreibgeschützt

Der WritableStream fü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.

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

Spezifikation
MediaStreamTrack Insertable Media Processing using Streams
# videotrackgenerator

Browser-Kompatibilität

Siehe auch