Start · Sprachen · JavaScript · Referenz · MediaStreamTrackGenerator

MediaStreamTrackGenerator

Schnittstelle

Ein <code>MediaStreamTrack</code>, dessen Inhalt du selbst erzeugst. Du schreibst dafür <code>VideoFrame</code>- oder <code>AudioData</code>-Objekte in seinen <code>WritableStream</code>.

seit JavaScript Nicht standardisiert: Chromium 94+ (Chrome, Edge, Kategorie: webapi

Signatur

interface MediaStreamTrackGenerator extends MediaStreamTrack

Beschreibung

MediaStreamTrackGenerator gehört zur Insertable Streams for MediaStreamTrack API, die auch „Breakout Box“ heißt. Das Interface erbt von MediaStreamTrack und ist damit ein vollwertiger Track. Du kannst es in einen MediaStream packen, über video.srcObject abspielen, mit MediaRecorder aufnehmen oder mit RTCPeerConnection.addTrack() versenden. Die Medien kommen dabei nicht von Kamera oder Mikrofon, sondern aus deinem Code: Über die Eigenschaft writable (ein WritableStream) schreibst du einzelne Frames in den Track.

Welche Objekte der Stream annimmt, hängt von kind ab. Ein Video-Generator (kind: "video") nimmt VideoFrame-Objekte aus WebCodecs an, ein Audio-Generator (kind: "audio") nimmt AudioData-Objekte an. Meist nutzt man ihn zusammen mit MediaStreamTrackProcessor. Die typische Pipeline sieht so aus: Kamera-Track → Processor (ReadableStream) → TransformStream (Filter, Weichzeichner, Wasserzeichen) → Generator (WritableStream) → neuer Track.

Typische Einsatzfälle:

  • Echtzeit-Videoeffekte in Videokonferenzen, z. B. Hintergrund weichzeichnen, Overlays einblenden oder Maschinelles Lernen mit WebGL/WebGPU
  • Selbst erzeugte Medien, z. B. aus einem (Offscreen-)Canvas, aus Streams, die du mit WebCodecs dekodiert hast, oder synthetisch erzeugter Ton
  • Audio-Verarbeitung einzelner Samples ohne AudioWorklet

Neben den geerbten Mitgliedern von MediaStreamTrack (kind, stop(), enabled, readyState usw.) kommt nur eine eigene Eigenschaft hinzu: writable. Schließt oder bricht man den Stream ab, endet der Track (readyState wird "ended"). Ruft man umgekehrt stop() auf, schlagen weitere Schreibversuche fehl.

Parameter

Name Typ Default Beschreibung
$init Pflicht { kind: "audio" | "video" } Konstruktor-Optionen für new MediaStreamTrackGenerator(init). Pflicht ist kind: "video" für VideoFrame, "audio" für AudioData. Bei einem anderen Wert wirft der Konstruktor einen TypeError.
$writable WritableStream<VideoFrame | AudioData> Schreibgeschützte Instanz-Eigenschaft. Ist der Stream, in den du die Frames schreibst, entweder per getWriter().write() oder als Ziel von pipeTo().

Rückgabewert

Typ
MediaStreamTrackGenerator
Beschreibung
Der Konstruktor gibt einen neuen, aktiven Track zurück (readyState === "live"). Er zeigt so lange nichts an bzw. gibt keinen Ton aus, bis du den ersten Frame in writable schreibst.