Les caméras IP sont de qualité variable, certaines se comportant de manière erratique d'après mon expérience. La gestion de leurs flux RTSP nécessite une dose de tolérance aux pannes.
Le projet Live555 fournit une implémentation client RTSP relativement tolérante aux pannes, openRTSP, pour extraire les flux audio / vidéo RTSP via CLI: http://www.live555.com/openRTSP/
Par exemple, pour enregistrer l'audio / vidéo RTSP d'une caméra dans des fichiers au format QuickTime (AVI et MP4 également disponibles), un fichier toutes les 15 minutes:
$ 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
Ces options signifient:
-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 suppression de l'option -t fait que openRTSP utilise par défaut UDP, ce qui peut réduire un peu le trafic réseau. Vous devrez jouer avec les options afin de trouver la combinaison qui vous convient.
Franchement, les caméras elles-mêmes sont parfois peu fiables, ou simplement mises en œuvre différemment - comme fermer la prise de manière inattendue n'est pas si inhabituel.
Parfois, le client openRTSP n'attrape pas ces problèmes. J'ai donc choisi de coder un contrôleur en Python en utilisant le module `` sous-processus '' pour appeler et surveiller la sortie standard de chaque instance de client openRTSP, et également vérifier que les fichiers continuent de croître en taille.
Cela semble être un sous-produit du bas de gamme de l'industrie de la vidéosurveillance jouant rapidement et avec des normes, RTSP et ONVIF étant les deux les plus fréquemment abusés.
Heureusement, vous pouvez généralement contourner ces problèmes. À moins que vos caméras IP et votre contrôleur ne soient tous conçus pour fonctionner correctement ensemble, n'utilisez ONVIF que pour la découverte et la gestion des paramètres.
J'utilise openRTSP sur quelques Raspberry Pi B + exécutant Raspbian. Chaque flux 1280x1024 occupe environ 8 à 10% du temps du processeur, et j'ai réussi à exécuter jusqu'à huit caméras par RPi, en écrivant les fichiers sur le stockage NAS. Un autre RPi traite les fichiers terminés avec ffmpeg, recherchant le mouvement et produisant des PNG d'index de ces images, pour aider à repérer les effractions.
Il y a un effort open source appelé ZoneMinder qui fait cette dernière partie, mais je n'ai pas pu le faire fonctionner avec mes caméras. Le support ONVIF est nouveau et naissant dans ZM, et il ne semble pas bien rivaliser avec les flux RTSP inégaux produits par ma ménagerie de caméras IP de moins de 100 $.