Zoneminder: RSTP-Streams werden verzögert angezeigt und aufgenommen

Wird in Zoneminder eine Quelle (in ZM-Sprache: ein “Monitor”) via HTTP/CGI etc. aufgerufen so kann die Anzahl der aufgenommenen (analysierten) Bilder sehr schön über die Einstellungen “Maximum FPS” bzw. “Alarm Maximum FPS” vorgenommen werden:

Zoneminder Monitor-Einstellungen

Egal wie viele Bilder die Kamera tatsächlich liefert bzw. liefern könnte werden in diesem Beispiel nur 5fps und im Alarmfall 10fps abgeholt und ausgewertet.

Versucht man das gleiche bei einem RTSP-Stream (Source-Typ ffmpeg oder libvlc) so scheint die Einstellung im ersten Moment zu funktionieren, die böse Überraschung folgt dann jedoch später: RTSP-Streams werden nicht vom Client “angefordert” sondern vom jeweiligen Sender (hier: IP-/LAN-Kamera) mit vorgegebener Bildrate und/oder Bandbreite geschickt. Ist jetzt die fps-Rate in den Monitor-Einstellungen niedriger als die des RTSP-Streams so kann folgendes passieren:

  • der Rechner ist schnell genug um die Bilder entgegen zu nehmen, aber Zoneminder fragt den ffmpeg-Buffer zu selten ab - tatsächlich kommt es damit zu Verzögerungen; die Videos sind im ZM u.U. sogar mehrere Dutzend Sekunden später zu sehen (und kriegen auch eine falsche Timestamp)
  • der Rechner ist nicht schnell genug um die Bilder entgegen zu nehmen und verliert die Verbindung
  • event. in Kombination mit Fehlermeldungen; konnten wir vor allem bei der Verwendung von libvlc beobachten

Ergo die Regel: bei der Verwendung von RTSP muss die fps-Einstellung in Zoneminder immer höher sein als die des RTSP-Streams (unbedingt ein paar fps Puffer einplanen!); ist dies nicht möglich (zu langsamer Rechner) oder nicht gewünscht (zu hohe Systemlast für eine einzelne Kamera) so kann manchmal die Einstellung “Frame Skip” ein wenig helfen - wobei der Einfluss vor allem auf die Prozessorauslastung niedriger war als erhofft (ffmpeg/libvlc müssen ja trotzdem weiterhin die volle Bildrate des RTSP-Streams entgegeben nehmen!):

Zoneminder Monitor-Einstellungen

Die sicherste Lösung ist immer noch, die Bildrate auf der Seite des Senders zu ändern und hier einen niedrigeren Wert einzustellen - in diesem Beispiel 3fps, was für die meisten Videoüberwachungs-Szenarien ausreichen dürfte:

RTSP-Einstellungen IP-Cam

Siehe auch: Zoneminder Homepage

blogroll

social