MediaStreamTrackGenerator
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Nicht standardisiert: Diese Funktion ist nicht standardisiert. Wir raten davon ab, nicht-standardisierte Funktionen auf produktiven Webseiten zu verwenden, da sie nur von bestimmten Browsern unterstützt werden und sich in Zukunft ändern oder entfernt werden können. Unter Umständen kann sie jedoch eine geeignete Option sein, wenn es keine standardisierte Alternative gibt.
Hinweis:
Erwägen Sie stattdessen die Verwendung von VideoTrackGenerator.
Die MediaStreamTrackGenerator-Schnittstelle der Insertable Streams for MediaStreamTrack API erstellt einen WritableStream, der als Quelle für einen MediaStreamTrack dient.
Das Objekt verarbeitet einen Stream von Medien-Frames als Eingabe. Dabei kann es sich um Audio- oder Video-Frames handeln.
Konstruktor
MediaStreamTrackGenerator()-
Erstellt ein neues
MediaStreamTrackGenerator-Objekt, das entwederVideoFrame- oderAudioData-Objekte akzeptiert.
Instanzeigenschaften
Diese Schnittstelle erbt außerdem Eigenschaften von MediaStreamTrack.
Instanzmethoden
Diese Schnittstelle implementiert keine eigenen Methoden, erbt aber Methoden von MediaStreamTrack.
Beispiele
Das folgende Beispiel stammt aus dem Artikel Einfügbare Streams für MediaStreamTrack und zeigt eine Barcode-Scanner-Anwendung. Sie verarbeitet Barcodes und hebt sie hervor, bevor sie die transformierten Frames in den beschreibbaren Stream von MediaStreamTrackGenerator.writable schreibt.
const stream = await getUserMedia({ video: true });
const videoTrack = stream.getVideoTracks()[0];
const trackProcessor = new MediaStreamTrackProcessor({ track: videoTrack });
const trackGenerator = new MediaStreamTrackGenerator({ kind: "video" });
const transformer = new TransformStream({
async transform(videoFrame, controller) {
const barcodes = await detectBarcodes(videoFrame);
const newFrame = highlightBarcodes(videoFrame, barcodes);
videoFrame.close();
controller.enqueue(newFrame);
},
});
trackProcessor.readable
.pipeThrough(transformer)
.pipeTo(trackGenerator.writable);