Saya punya beberapa Kamera IP yang menghasilkan aliran RTSP (h264 mpeg4).
Memukul URL secara lokal melalui VLC: rtsp: //192.168.0.21: 554 / mpeg4
Saya dapat melakukan streaming kamera dan membuangnya ke disk (di desktop saya). Namun saya ingin menyimpan file-file ini di NAS saya (FreeNAS). Saya mencari cara untuk menangkap aliran RTSP dan membuangnya ke disk tetapi saya tidak dapat menemukan apa pun.
Apakah mungkin untuk menangkap streaming di FreeBSD atau Linux (RaspberryPi) dan membuang konten yang dialirkan ke disk lokal ke Linux atau FreeBSD - lebih disukai setiap 30 menit?
EDIT: NAS tanpa kepala (HP N55L atau apalah) dan RaspberryPi juga tanpa kepala.
Saya sudah melihat ke ZoneMinder tetapi butuh sesuatu yang kecil. Saya berharap mungkin menggunakan Motion untuk mendeteksi gerakan di sungai tetapi itu akan datang nanti.
Jawaban:
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:
Opsi-opsi ini berarti:
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.
sumber
Saya hanya berpikir saya akan menambahkan dua sen dan melengkapi jawaban BjornR.
Alih-alih menjalankan tugas cron untuk secara berkala membunuh proses VLC, orang dapat memberitahu VLC untuk menjalankan selama waktu tertentu dan menutupnya setelah itu.
Ini adalah perintah yang saya jalankan di kotak saya:
Ini menjalankan VLC untuk jumlah waktu yang ditentukan dan kemudian keluar. Vlc: // keluar dari parameter diperlukan karena VLC akan berhenti merekam dan tetap terbuka. Perintah ini perlu ditempatkan di dalam lingkaran.
Satu-satunya masalah yang saya temukan sejauh ini adalah mungkin akan kehilangan beberapa detik setiap kali rekaman baru dimulai.
sumber
Jika saya mengikuti pertanyaan Anda dengan benar, mengapa Anda tidak mencoba perintah berikut pada sistem Linux (RPi):
Ini harus menyimpan video dalam potongan 300 detik. (Perhatikan bahwa panjang klip akan tergantung pada kecepatan bingkai input dan output Anda)
sumber
VLC terlihat seperti kandidat yang ideal untuk memproses streaming Anda. Metode dasar untuk menangkap aliran dijelaskan di situs web Videolan. Saya berhasil merekam output dari kamera jaringan D-Link DCS-5222 saya menggunakan perintah berikut:
Dalam kasus Anda, ini mungkin berfungsi untuk menyimpan output secara lokal:
Saya menyarankan untuk menjalankan skrip yang mengakhiri proses vlc ini dan meluncurkan contoh baru setiap 30 menit karena saya tidak yakin VLC dapat melakukan ini.
Sedangkan untuk menyimpan pada NAS, pasang saja ke sistem file lokal Anda.
sumber