Ein Codec (kurz für Coder/Decoder) ist ein Verfahren, mit dem Audio- und Videodaten für die Übertragung komprimiert und wieder dekodiert werden. Damit eine Videokonferenz funktioniert, müssen Browser und Server einen gemeinsamen Codec unterstützen – sie müssen sich, bildlich gesprochen, auf eine gemeinsame „Sprache” einigen. Findet BigBlueButton bei diesem Aushandlungsprozess keinen kompatiblen Codec, bricht die Verbindung mit dem Fehler 2203 ab.
Wie äußert sich der Fehler?
Beim Versuch, Audio oder Video in einer BigBlueButton-Konferenz zu aktivieren, schlägt der Verbindungsaufbau fehl. Im Browserfenster erscheint eine Fehlermeldung mit dem Code 2203 oder dem Hinweis „No available codec”. Die Kamera- oder Mikrofon-Freigabe selbst gelingt zwar noch, doch die eigentliche Medienübertragung zum Server kommt nicht zustande. Bei Audio tritt der Fehler äußerst selten auf; häufiger ist Video betroffen.
Mögliche Ursachen
- Fehlende GStreamer-H.264-Plugins (BBB ≤ 2.4 mit Kurento): Kurento benötigt das Paket
gstreamer1.0-plugins-uglyfür H.264-Unterstützung. Fehlt es, kann Kurento keine Video-Codecs anbieten. - Beschädigter GStreamer-Plugin-Cache: GStreamer speichert seine Fähigkeiten in einem lokalen Cache. Ist dieser korrumpiert, meldet Kurento fälschlicherweise keine verfügbaren Codecs – obwohl die Plugins installiert sind.
- Nicht heruntergeladenes OpenH264-Plugin (Firefox): Firefox bezieht das H.264-Plugin automatisch von Cisco. In abgeschirmten Netzwerken (Schule, Behörde) kann dieser Download blockiert sein, sodass Firefox kein H.264 anbieten kann.
- Falsch konfigurierte Codec-Liste in mediasoup (BBB 2.5+): Wenn in der Konfigurationsdatei
production.ymleine leere oder ungültige Codec-Liste eingetragen ist, annonciert der Medienserver keine unterstützten Codecs. - Browser-Sicherheitseinstellungen: Bestimmte gehärtete Browser-Konfigurationen deaktivieren H.264 per Einstellung (z. B. Firefox mit
media.peerconnection.video.h264_enabled: false). - Fehlender Hardware-Encoder: Ist der Server auf Hardware-Kodierung (z. B. NVIDIA NVENC) angewiesen, aber die GPU steht nicht zur Verfügung, steht kein passender Codec bereit.
Lösungen
Für Teilnehmer
- Anderen Browser verwenden: Wechseln Sie zu Google Chrome oder Microsoft Edge. Diese Browser unterstützen H.264 und VP8/VP9 zuverlässig ohne zusätzliche Plugins.
- Firefox: OpenH264-Plugin aktivieren und aktualisieren: Öffnen Sie
about:addons→ Plugins → OpenH264 Video Codec von Cisco Systems → Immer aktivieren. Starten Sie Firefox anschließend neu und warten Sie, bis das Plugin heruntergeladen wurde (Internetverbindung erforderlich). - Browser-Cache und -Einstellungen zurücksetzen: Leeren Sie den Browser-Cache vollständig und prüfen Sie, ob eine Browsererweiterung (z. B. ein Datenschutz-Add-on) WebRTC blockiert. Deaktivieren Sie Extensions testweise.
- Netzwerkbeschränkungen prüfen: In Unternehmens- oder Schulnetzwerken können bestimmte Ports oder Protokolle gesperrt sein. Testen Sie die Verbindung über ein anderes Netzwerk (z. B. Mobilfunk-Hotspot).
Für Administratoren
- GStreamer H.264-Paket installieren (BBB ≤ 2.4, Kurento): Installieren Sie das fehlende Plugin und starten Sie Kurento neu:
sudo apt-get install -y gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad \
libgstreamer-plugins-ugly1.0-0
sudo systemctl restart kurento-media-server- GStreamer-Plugin-Cache löschen (Kurento): Bei einem korrumpierten Cache hilft das vollständige Löschen und ein Neustart:
sudo rm -rf /root/.cache/gstreamer-1.0/
sudo rm -rf /home/kurento/.cache/gstreamer-1.0/
sudo systemctl restart kurento-media-serverÜberprüfen Sie anschließend, ob H.264 erkannt wird:
sudo -u root gst-inspect-1.0 | grep -i h264- mediasoup-Codec-Konfiguration prüfen (BBB 2.5+): Stellen Sie sicher, dass
/etc/bigbluebutton/bbb-webrtc-sfu/production.ymleine vollständige Codec-Liste enthält:
mediasoup:
webrtc:
mediaCodecs:
- kind: audio
mimeType: audio/opus
clockRate: 48000
channels: 2
- kind: video
mimeType: video/VP8
clockRate: 90000
- kind: video
mimeType: video/H264
clockRate: 90000
parameters:
level-asymmetry-allowed: 1
packetization-mode: 1
profile-level-id: "42e01f"sudo bbb-conf --restart- Codec-Erkennung in Kurento-Logs prüfen: Codec-bezogene Fehler lassen sich direkt im Kurento-Log nachvollziehen:
grep -i "codec\|h264\|gstreamer" /var/log/kurento-media-server/kurento.log | tail -30Weitere Informationen
Technischer Hintergrund: SDP-Aushandlung und Codec-Schnittmenge
Wenn ein Browser eine WebRTC-Verbindung aufbaut, schickt er dem Server ein SDP-Angebot (Session Description Protocol), das alle vom Browser unterstützten Codecs auflistet. Der BBB-Medienserver (Kurento bei BBB ≤ 2.4, mediasoup ab BBB 2.5) antwortet mit einer SDP-Antwort, die nur die Codecs enthält, die beide Seiten beherrschen. Ist diese Schnittmenge leer – weil z. B. der Server kein H.264 kennt oder der Browser keines anbietet – scheitert die Verbindung mit dem internen Fehlercode app.sfu.noAvailableCodec2203, der als Fehler 2203 angezeigt wird.
Versionshinweis: Auf BBB ≤ 2.4 läuft die Medienverarbeitung über Kurento und benötigt GStreamer-Plugins für H.264. Ab BBB 2.5 übernimmt mediasoup, das Codec-Unterstützung (VP8, VP9, H.264, AV1) fest eingebaut hat. Fehler 2203 entsteht dort fast ausschließlich durch eine falsche oder leere Codec-Liste in production.yml. Ab BBB 2.6 sind auf einer Standard-Installation alle nötigen Codecs vorhanden; Fehler 2203 tritt bei sauberen Installationen kaum noch auf.
