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 ([url]https://forum.dug.net.pl/viewtopic.php?id=29900[/url]) 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 [url]http://www.herospeed.net/en/index.php?m=content&c=index&a=lists&catid=10[/url]
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
[b]6 Awesome DIY Security Camera Clients for Linux [/b]
http://www.makeuseof.com/tag/awesome-diy-security-camera-clients-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
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00090 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.133.119.247' WHERE u.id=1 |
0.00205 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.133.119.247', 1732804783) |
0.00052 | SELECT * FROM punbb_online WHERE logged<1732804483 |
0.00069 | DELETE FROM punbb_online WHERE ident='85.208.96.207' |
0.00050 | SELECT topic_id FROM punbb_posts WHERE id=314225 |
0.00004 | SELECT id FROM punbb_posts WHERE topic_id=29901 ORDER BY posted |
0.00060 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=29901 AND t.moved_to IS NULL |
0.00009 | SELECT search_for, replace_with FROM punbb_censoring |
0.00127 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=29901 ORDER BY p.id LIMIT 0,25 |
0.00081 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29901 |
Total query time: 0.0076 s |