Kamera IP memiliki kualitas yang beragam, beberapa berperilaku tidak menentu menurut pengalaman saya. Berurusan dengan aliran RTSP mereka membutuhkan dosis toleransi kesalahan.
Proyek Live555 menyediakan implementasi klien RTSP yang relatif toleran terhadap kesalahan, openRTSP, untuk menarik aliran audio / video RTSP melalui CLI: http://www.live555.com/openRTSP/
Misalnya, untuk menyimpan audio / video RTSP kamera ke file dalam format QuickTime (AVI dan MP4 juga tersedia), satu file setiap 15 menit:
$ 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
Opsi-opsi ini berarti:
-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
Menghapus opsi -t menyebabkan openRTSP menjadi default ke UDP, yang dapat mengurangi lalu lintas jaringan sedikit. Anda harus bermain dengan opsi untuk menemukan kombinasi yang cocok untuk Anda.
Terus terang, kamera itu sendiri kadang-kadang tidak dapat diandalkan, atau hanya diimplementasikan secara berbeda - seperti menutup soket secara tidak terduga bukanlah hal yang aneh.
Terkadang klien openRTSP tidak menangkap gangguan ini. Jadi saya memilih kode pengontrol dengan Python menggunakan modul 'subprocesses' untuk memanggil dan memantau stdout dari setiap instance klien openRTSP, dan juga memeriksa apakah file terus bertambah besar.
Ini tampaknya merupakan produk sampingan dari industri CCTV kelas bawah yang bermain cepat dan longgar dengan standar, RTSP dan ONVIF menjadi dua produk yang paling sering disalahgunakan.
Untungnya, Anda biasanya dapat mengatasi masalah ini. Kecuali jika kamera dan pengontrol IP Anda semuanya dirancang untuk bermain bersama dengan baik, hanya gunakan ONVIF untuk manajemen pengaturan dan penemuan sekali saja.
Saya menggunakan openRTSP pada beberapa Raspberry Pi B + yang menjalankan Raspbian. Setiap aliran 1280x1024 menempati sekitar 8-10% dari waktu CPU, dan saya telah berhasil menjalankan hingga delapan kamera per RPi, menulis file ke penyimpanan NAS. Proses RPi lain menyelesaikan file dengan ffmpeg, mencari gerakan dan menghasilkan indeks PNG dari frame-frame itu, untuk membantu menemukan pembobolan.
Ada upaya sumber terbuka yang disebut ZoneMinder yang melakukan bagian terakhir ini, tetapi saya tidak dapat membuatnya bekerja dengan kamera saya. Dukungan ONVIF baru dan baru lahir di ZM, dan sepertinya tidak cocok dengan aliran RTSP yang buruk yang dihasilkan oleh kamera IP kamera saya yang di bawah $ 100.