# MediaManager Utility ## Aufgaben - Kapselt WebRTC-/Media-APIs (`RtcPeerConnection`, `MediaStream`). - Stellt Hilfsmethoden bereit für Offer/Answer, ICE-Kandidaten und Mikrofonzugriff. ## Hauptmethoden - `create_peer_connection()` → Erstellt `RtcPeerConnection` mit Default-STUN. - `create_offer(pc)` / `handle_offer(pc, sdp)` / `handle_answer(pc, sdp)` → Asynchrone SDP-Verarbeitung. - `request_microphone_access()` → Lädt Audio-Stream via `navigator.mediaDevices.getUserMedia`. - `add_stream_to_pc(pc, stream)` → Fügt Tracks via dynamischem `addTrack` hinzu. - `add_ice_candidate(pc, candidate_json)` → Parsed JSON und ruft `addIceCandidate`. - `stop_stream()` → Stoppt aktive Tracks. ## Zustandsverwaltung - `state: MediaState` (enum `Uninitialized`, `Requesting`, `Granted`, `Denied`, `NotSupported`). Dient für UI-Feedback. ## TODOs - Mehrere ICE-Server aus Config berücksichtigen. - Fehlerbehandlung vereinheitlichen (eigene Error-Typen, Logging). - Audio-Level-Monitoring (AnalyserNode) einbauen. - Video-Streams unterstützen (getUserMedia-Constraints).