Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Cześć!
W wątku dotyczącym zapchania się dysku wywiązała (https://forum.dug.net.pl/viewtopic.php?id=29900) się, dyskusja na temat rejestrowania obrazu z kamer monitoringu na maszynie z Windows 7. Ogólnie chciał bym przenieść dyskusję do osobnego wątku, bo to osobne tematy.
Ogólnie używam do rejestrowania obrazu kamer IP. Każda kamera ma swój adres IP i serwuje strumień rtsp. Jako zawodowy programista chciałem napisać swój system zapisywania, mixowania i enkodowania tych strumieni wykorzystując ffmpeg - jednak mnogość innych projektów które przynoszą już obecnie zyski spowodowała, że projekt nagrywarki odsunąłem na bok. Skorzystałem, z oprogramowania dołączonego do kamer - oto takiego http://www.herospeed.net/en/index.php?m=content& … &catid=10
To co dla mnie ważne :
- możliwość, zapisu ciągłego obrazu z kamer, gdy miejsce się kończy to kasowanie najstarszych nagrań
- możliwość, podglądu wszystkich kamer live
- możliwość podglądu historii wszystkich kamer na raz, jak i pojedynczych
- obsługa 8 kamer i więcej
- strumieniowanie siatki 8 kamer w strumieniu głównym i podstrumeiniach ( w głównym daje obciążenie ok 24MBps, a w podstrumeiniach ok 10 MBps sieci, gdie przy końcówce przeglądającej WiFi i słabym procku ma znaczenie)
- możliwość strumieniowania na jakąś stronę internetową w świat, ofc chronione hasłem.
Czy są jakieś alternatywy pracujące na Linuksie ? Znam ZoneMinder, ale on z tego co wiem, to zapisuje same klatki a nie film, a dwa, że reaguje na ruch, a nie w trybie ciągłym.
Będę wdzięczny za sugestie.
Offline
Afaik to w środowisku linuksowym możesz się spełnić jako programista, bo jak ja szukałem czegoś na szybkości to tylko zoneminder był dostępny (jakieś 4 lata wstecz) ;)
Offline
6 Awesome DIY Security Camera Clients for Linux
http://www.makeuseof.com/tag/awesome-diy-security-c … lients-linux/
Ostatnio edytowany przez davidoski (2017-09-13 18:23:04)
Offline
Do oglądania przez www i rejestrowania - Zoneminder.
Do rejestrowania tylko ruchu (zmiany na obrazie) Motion - chyba od dawna nie jest rozwijany, ale działa.
Do zgrywania obrazu z kamer starczy ffmpeg, tylko trzeba go troszkę oskrypcić.
Kasowanie starszych nagrań? Skrypt do Crona, który sprawdza, ile zajęły nagrania
i najwyżej kasuje nagrania z przed trzech dni używając finda do wyszukania plików
do usunięcia.
Nagrywanie tylko musiałoby zapisywać pliki np o długości 1h nagrania, a nie ciągle.
W ffmpegu nie wiem, czy da się zdefiniować maksymalną wielkość pojedynczego pliku,
ale w razie czego restart skrypta trwający 0,5 s co 6 godzina lub 12 godzin to nie jest wielki problem.
Skrypty używające ffmpega najlepiej byłby podnosić przez daemontools,
który automatycznie podnosi usługę która się wyłączy z dowolnego powodu.
Pozdro
Ostatnio edytowany przez Jacekalex (2017-09-13 19:41:58)
Offline
Cześć.
Dzięki za link z zestawieniem programów - parę wygląda obiecująco.
Co do Zonemindera - muszę raz jeszcze go przetestować - ostatnio jak go zainstalowałem, to nie działał za ciekawie - super wolno, a i nie pokazywał mi filmu tylko zdjęcia.
Co do ffmpeg - no chciałem takie rozwiązanie zrobić, tylko, że ffmpeg po paru sekundach wali błędami - jakby mój 12 jajowy Xeon nie wyrabiał z kodowaniem strumienia do pliku ... i to przy 1 kamerze, a co dopiero przy 8 ... Pewnie da się to zrobić, mieszając parametrami, jednak to nie starczy - trzeba by zrobić, jeszcze backend, który będzie miał jakiś interface HTTP albo TCP, który na żądanie klienta zacznie strumieniować nagrania z n kamer z danego okresu np. 3 w nocy 2 dni temu. Na końcu potrzeba natywnego klienta, ew. www, gdzie w JS odbieram i renderuje ten strumien rtsp (jeden lub wielu), no i serwer co mi tego klienta JS wyśle - więc robi się dość sporo grzebania, więc chcę na już użyć, czegoś gotowego, a potem grzebać swój system.
Co do spełniania się jako programista - nie sądzę, żebym pisał taki system stricte pod Linuxa. Jak już, to myślałem o multiplatformowym systemie (dlatego cron odpada, bardziej jakiś autorski scheduler). Mam pewne doświadczenie w pisaniu softu przenośnego, który działa na Windowsie, Linuxie, macOS - notabene pisany w C#- odkąd Balmer abdykował to MS daje sporo narzędzi programistom wszystkich platform (pa jaki fajne Visual Studio na macOS jest !)
No to tak - sprawdze, czy da się pod moje potrzeby Zonemindera skonfigurować, zobaczę, też co oferuje IVideon, jak coś osiągnę, to pogrzebie coś swojego. Jak ktoś chciał by zabrać głos w dyskusji - zapraszam !
Offline
FFmpeg nie musi kodować, jeżeli np kamera IP wysyła sygnał h264 to musisz go tylko zgrać do pliku, bez zmiany formatu.
Jeżeli chcesz przy pomocy ffmpega dekodować w locie, to postaraj się o jakiś szybki interfejs sprzętowy, jak np NVidia z Vdpau czy AMD z Vaapi.
Xeony chyba nie mają intelowskiego Clear Video HD do dekodowania video.
Bo chyba te kamerki nie są do serwera podłączone kablami analogowymi do jakichś kart na serwerze, prawda?
Ostatnio edytowany przez Jacekalex (2017-09-14 13:32:58)
Offline
Nie nie, te kamerki to kamery IP - każda ma swój adres i wysyłają unicastem, albo broudcastem strumien rtsp. Co do kodowania - z powodu, że mam kiepskie łącze i wolne końcówki, chciałem też miksować na serwerze grida z 8-mioma i restreamować. Co do zapisu - obaczaje jak zapisac ten h264 bez kodowania ponownego. Co do układów sprzętowych - poczytam o tym.
Offline
Witam,
okoliczności sprawiły, że również muszę zainstalować monitoring na swoim domu. Planuje 2-4 kamerki IP.
Postanowiłem jako rejestrator wykorzystać NASa którego i tak już mam. NAS pracuje na Debianie 10 z 4 rdzeniowym CPU AMD x845 i 8GB RAM DDR3 + SSD i HDD - myślę, że sprzęcik podoła.
Czy od 2017 coś się zmieniło w temacie i pojawił się jakiś ciekawszy soft, który możecie polecić? ;)
Pozdrawiam
Dawid
Ostatnio edytowany przez dawidt (2020-02-20 13:55:20)
Offline
Trochę wykopalisko, ale udało mi się zrobić coś takiego na raspianie, a to przecież jest przodek debiana;)
#!/bin/sh ### BEGIN INIT INFO # Provides: kamera dom # Required-Start: $remote_fs $syslog $all # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Kamera # Description: Kamera IP RTSP MP4 ### END INIT INFO while [ 1 ] do #today=`/bin/date '+%d-%m-%Y__%H-%M-%S'`; today=`/bin/date '+%d-%m-%Y__%H'xx`; #Usuń poprzednie zrobione pliki starsze niż x dni find /home/pi/camera/ -name '*.mp4' -mtime +7 -delete #Pobierz migawkę ze strumienia RTSP ffmpeg -i "rtsp://admin:123456@192.168.0.86:554/H264?ch=1&subtype=2" -vcodec copy -framerate 10 -map 0 -f segment -segment_time 60 -segment_format mp4 -t 01:00:00 /home/pi/camera/$today%02d.mp4 done
FFMPEG tworzy w locie bez kodowania pliki o długości 1minuty, kończy swoją pracę po jednej godzinie. Wtedy funkcja find kasuje starsze pliki niż 7 dni i wszystko zaczyna się od nowa w pętli true.
Skrypt dodany jest w systemctl jako usługa. Jak na razie działa to dobrze, jedynie miałem problem z sensownym nazewnictwem plików wyjściowych. FFMPEG nie chciał działać na samej dacie i godzinie (10 plikó o takiej samej nazwie). Trzeba było dodać kolejny numer %02d.
Ostatnio edytowany przez lencol (2020-09-20 21:33:53)
Offline