Zum Inhalt springen
Alles Automatisch
Guide

4K-Kameras ruckeln in Home Assistant: grüner Streifen und Stottern

4K- oder ColorVu-Kameras stottern auf dem Wandpanel, zeigen einen grünen Streifen oder laden gar nicht. Warum das an H.265 und WebRTC liegt und wie du es mit MJPEG bombenfest löst.

Fortgeschritten4 Min. LesezeitAktualisiert am

Das Problem

Die Kamera läuft in ihrer eigenen App butterweich, im Home-Assistant-Dashboard ruckelt sie. Manchmal zieht sich ein grüner Streifen durchs Bild, manchmal lädt von mehreren Kameras nur eine. Auf dem Wandpanel bleibt das Bild ganz schwarz. Am Laptop sieht dasselbe Dashboard oft völlig okay aus.

Das ist typisch für starke Kameras auf schwacher Anzeige. 4K, ColorVu, H.265, alles gleichzeitig. Die Kamera ist selten schuld. Es hakt an Codec und Browser.

Warum starke Kameras schwache Panels überfordern

Moderne Überwachungskameras liefern ihr Bild in H.265 (HEVC). Das spart Bandbreite, ist aber rechenintensiv zu dekodieren. Zwei Dinge treffen dann zusammen:

  • Der grüne Streifen ist ein Dekodier-Artefakt. Ein halb dekodiertes HEVC-Bild, kein Kameradefekt. Du siehst quasi den Moment, in dem der Decoder aussteigt.
  • Manche Browser können H.265 über WebRTC gar nicht. Microsoft Edge auf Windows zum Beispiel dekodiert HEVC über WebRTC schlicht nicht. Chrome kann es erst ab Version 136. Deshalb läuft dasselbe Dashboard am Chrome-Laptop, aber nicht am Edge-Wandpanel.

Wichtig: Die HEVC Video Extensions von Windows helfen hier nicht. Die decken nur normales <video>-Playback ab, nicht den WebRTC-Pfad, über den Home Assistant das Live-Bild schickt.

Der go2rtc-Audio-Fehler als Nebenschauplatz

Oft taucht auf dem Panel eine Meldung auf wie „Failed to start WebRTC stream ... DESCRIBE failed: 404 ... #audio=opus". Das klingt nach Video, ist aber ein Audio-Problem: WebRTC akzeptiert nur bestimmte Audio-Codecs (Opus, PCMU, PCMA). Hat dein Stream kein passendes Audio, versucht go2rtc intern einen Opus-Restream mit ffmpeg, der scheitert, daher der 404.

Der Haken: Selbst wenn du das Audio reparierst, bleibt das H.265-Video auf Edge liegen. Der Audio-Fehler ist also eine Spur, nicht die Wurzel.

Was nicht funktioniert

Bevor du dich in Configs verrennst, zwei Sackgassen:

  • Es gibt keinen Schalter, um pro Kamera das WebRTC-Audio abzuschalten. Weder im Generic-Camera-Dialog noch an der Entität.
  • Die in Home Assistant gebündelte go2rtc-Integration liest keine eigene /config/go2rtc.yaml. Sie verwaltet ihre Konfiguration selbst, Einträge in dieser Datei bleiben wirkungslos. Für eigene Streams brauchst du die separate go2rtc-App (früher Add-on).

Die kugelsichere Lösung: MJPEG über den Substream

Die zuverlässigste Lösung für ein schwaches Panel umgeht WebRTC und H.265 komplett: Du bindest die Kamera als Generic Camera ohne Stream-Quelle ein, nur mit einem Standbild-Link auf den Substream. Home Assistant liefert daraus einen MJPEG-Strom, also eine schnelle Folge von JPEG-Bildern. Kein WebRTC, kein Audio, kein H.265. Das rendert jeder Browser.

So gehst du vor:

  1. Einstellungen, Geräte & Dienste, Integration hinzufügen, Generic Camera.
  2. Bei Standbild-URL den Snapshot-Link des Substreams eintragen (siehe unten).
  3. Stream-Quelle leer lassen. Genau das erzwingt MJPEG.
  4. Benutzer und Passwort der Kamera eintragen, Authentifizierung passend wählen (bei Hikvision digest).
  5. Bildrate auf einen ruhigen Wert setzen, etwa 6 Bilder pro Sekunde. Bestätigen.

Der Snapshot-Link zeigt bei Hikvision auf den kleinen Substream (Kanal 102), nicht auf den 4K-Hauptstream:

text
http://<KAMERA-IP>/ISAPI/Streaming/channels/102/picture

Hinweis: Kanal 101 ist der 4K-Hauptstream, Kanal 102 der kleine Substream. Für ein Panel willst du immer den Substream. Er kostet fast keine Leistung und reicht fürs Überwachungsbild locker.

Hikvision in der Praxis

Ein paar Details, die dir die Zuordnung und Einrichtung erleichtern:

  • RTSP-Substream falls du ihn brauchst: rtsp://<KAMERA-IP>:554/Streaming/Channels/102.
  • Der ISAPI-Snapshot verlangt Digest-Auth mit dem Benutzer admin.
  • Hikvision brennt den Kameranamen als Text ins Bild (OSD). Wenn du mehrere Kameras hast und nicht weißt, welche IP zu welcher gehört, ruf einfach nacheinander die Snapshot-Links auf. Der Name im Bild verrät es dir.
  • Panorama-Modelle liefern ein breites Seitenverhältnis. Plane auf dem Dashboard entsprechend Platz ein, sonst wirkt das Bild gequetscht.

Wenn du die Generic Camera nicht über die Oberfläche, sondern über die Config-Flow-API anlegst, gibt es eine Stolperfalle: Die erweiterten Felder (Bildrate, SSL prüfen, Authentifizierung) müssen verschachtelt unter dem Schlüssel advanced stehen, sonst kommt ein 400 extra keys not allowed. Danach folgt ein Bestätigungsschritt mit confirmed_ok: true.

Wann sich echtes Video lohnt

MJPEG hat einen Nachteil: Es fühlt sich wie eine schnelle Bildfolge an, nicht wie flüssiges Video. Für Überwachung ist das völlig in Ordnung, du hast fast keine Latenz und ein stabiles Bild.

Willst du echtes, flüssiges Live-Video auch auf einem schwachen Panel, führt der Weg über die go2rtc-App mit H.264-Transcode. Die Kamera schickt H.265, go2rtc rechnet auf H.264 um und wirft das Audio weg, das dann jeder Browser dekodiert. Der Preis: Das Transcoding läuft dauerhaft auf der CPU deines Home-Assistant-Systems. Auf einem Raspberry Pi wird das eng, auf einem kleinen Mini-PC ist es machbar.

Checkliste

  • Grüner Streifen oder Ruckeln nur auf dem Panel, am Laptop ok? Dann ist es der Codec, nicht die Kamera.
  • Läuft das Panel auf Edge oder altem Chrome? H.265 über WebRTC geht dort nicht.
  • Generic Camera mit Standbild-URL des Substreams, Stream-Quelle leer?
  • Bei Hikvision Digest-Auth und Kanal 102?
  • Bildrate moderat (etwa 6/s), damit das Panel nicht überläuft?
  • Für echtes Video: go2rtc-App mit H.264-Transcode, wenn die CPU es hergibt.

Mit dem MJPEG-Weg hast du ein Bild, das auf jedem Panel läuft. Kein Codec-Ärger, keine schwarzen Kacheln, keine grünen Streifen mehr.

Zum Thema

Passende Videos