Ein MediaStream ist das zentrale Objekt der Media-Capture-API im Browser: Er bündelt eine oder mehrere Medien-Spuren (Tracks) zu einem Strom aus Audio und Video. Erzeugt wird er mit getUserMedia() (Kamera und Mikrofon) oder getDisplayMedia() (Bildschirm- oder Fensteraufnahme).

Aufbau: Streams und Tracks

Ein MediaStream enthält einzelne MediaStreamTrack-Objekte — jeweils eine Audio- oder eine Videospur. Die Tracks lassen sich zur Laufzeit hinzufügen und entfernen, etwa wenn in einer Konferenz das Mikrofon stummgeschaltet oder eine zweite Kamera zugeschaltet wird. Über Constraints wie width, height oder frameRate legt die Anwendung Wünsche an Auflösung und Bildrate fest; der Browser wählt daraus die passende Einstellung des Geräts.

Neben der lokalen Erfassung kann ein Stream auch von einem entfernten Teilnehmer stammen: In einer WebRTC-PeerConnection liefert das Ereignis ontrack die ankommenden Spuren als MediaStream — lokal erzeugte und empfangene Spuren werden im selben Modell verwaltet.

Verwendung

  • Vorschau: Der Stream wird direkt an ein <video>- oder <audio>-Element übergeben (srcObject).
  • Übertragung: Tracks werden über RTCPeerConnection.addTrack() an den entfernten Teilnehmer gesendet — als RTP-Pakete, verschlüsselt per SRTP.
  • Aufnahme und Bearbeitung: MediaRecorder speichert den Stream als Datei; die Web-Audio-API kann die Tonspur weiterverarbeiten.
  • Screen-Sharing: getDisplayMedia() erzeugt einen Stream der Bildschirminhalte, optional mit Mikrofon-Ton kombiniert.

Ein Stream kann dabei mehrfach verwendet werden — dieselbe Kameraaufnahme lässt sich gleichzeitig für die lokale Vorschau, eine RTCDataChannel-Anwendung und die Übertragung an mehrere Teilnehmer nutzen.

Verwandte Grundlagen: WebRTC, RTCDataChannel, SFU.