Le telecamere IP sono di qualità variabile, alcune si comportano in modo irregolare nella mia esperienza. La gestione dei flussi RTSP richiede una dose di tolleranza agli errori.
Il progetto Live555 fornisce un'implementazione client RTSP relativamente tollerante ai guasti, openRTSP, per l'estrazione di flussi audio / video RTSP tramite CLI: http://www.live555.com/openRTSP/
Ad esempio, per salvare l'audio / video RTSP di una fotocamera su file in formato QuickTime (disponibili anche AVI e MP4), un file ogni 15 minuti:
$ openRTSP -D 1 -c -B 10000000 -b 10000000 -q -Q -F cam_eight -d 28800 -P 900 -t -u admin 123456 rtsp://192.168.1.108:554/11
Queste opzioni significano:
-D 1 # Quit if no packets for 1 second or more
-c # Continuously record, after completion of -d timeframe
-B 10000000 # Input buffer of 10 MB
-b 10000000 # Output buffer 10MB (to file)
-q # Produce files in QuickTime format
-Q # Display QOS statistics
-F cam_eight # Prefix output filenames with this text
-d 28800 # Run openRTSP this many seconds
-P 900 # Start a new output file every -P seconds
-t # Request camera end stream over TCP, not UDP
-u admin 123456 # Username and password expected by camera
rtsp://192.168.1.108:554/11 # Camera's RTSP URL
La rimozione dell'opzione -t comporta invece l'impostazione predefinita di UDP di openRTSP, che può ridurre un po 'il traffico di rete. Dovrai giocare con le opzioni per trovare la combinazione più adatta a te.
Francamente, le telecamere stesse a volte sono inaffidabili, o semplicemente implementate in modo diverso, come chiudere improvvisamente la presa non è poi così insolito.
A volte il client openRTSP non rileva questi problemi. Quindi ho scelto di codificare un controller in Python usando il modulo 'sottoprocessi' per invocare e monitorare lo stdout di ogni istanza client openRTSP, e anche controllare che i file continuino a crescere di dimensioni.
Questo sembra essere un sottoprodotto della fascia bassa del settore delle TVCC che gioca veloce e sciolto con gli standard, RTSP e ONVIF sono i due più abusati.
Fortunatamente, di solito è possibile aggirare questi problemi. A meno che le telecamere IP e il controller non siano tutti progettati per funzionare bene insieme, utilizzare ONVIF solo per il rilevamento e la gestione delle impostazioni una sola volta.
Uso openRTSP su alcuni Raspberry Pi B + con Raspbian. Ogni flusso 1280x1024 occupa circa l'8-10% del tempo della CPU e ho eseguito con successo fino a otto telecamere per RPi, scrivendo i file nella memoria NAS. Un altro RPi elabora i file completati con ffmpeg, cercando il movimento e producendo indici PNG di quei frame, per aiutare a individuare le irruzioni.
C'è uno sforzo open source chiamato ZoneMinder che fa quest'ultima parte, ma non sono riuscito a farlo funzionare con le mie macchine fotografiche. Il supporto ONVIF è nuovo e nascente in ZM, e non sembra contendersi bene con gli spot RTSP chiazzati prodotti dal mio serraglio di telecamere IP con meno di $ 100.