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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2017-09-13 15:17:03

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Rejestrowanie obrazu z kamer IP

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

 

#2  2017-09-13 18:17:03

  lis6502 - Łowca lamerów

lis6502
Łowca lamerów
Skąd: Stalinogród
Zarejestrowany: 2008-12-04

Re: Rejestrowanie obrazu z kamer IP

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

 

#3  2017-09-13 18:22:29

  davidoski - Użytkownik

davidoski
Użytkownik
Skąd: Poznań
Zarejestrowany: 2007-04-17

Re: Rejestrowanie obrazu z kamer IP

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

 

#4  2017-09-13 19:40:15

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Rejestrowanie obrazu z kamer IP

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2017-09-14 06:22:58

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Rejestrowanie obrazu z kamer IP

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

 

#6  2017-09-14 13:26:24

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Rejestrowanie obrazu z kamer IP

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2017-09-14 17:29:11

  lukas.gab - Użytkownik

lukas.gab
Użytkownik
Zarejestrowany: 2009-02-27

Re: Rejestrowanie obrazu z kamer IP

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

 

#8  2020-02-19 12:31:40

  dawidt - Nowy użytkownik

dawidt
Nowy użytkownik
Zarejestrowany: 2020-02-19

Re: Rejestrowanie obrazu z kamer IP

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

 

#9  2020-09-20 21:32:26

  lencol - Użytkownik

lencol
Użytkownik
Zarejestrowany: 2015-01-28

Re: Rejestrowanie obrazu z kamer IP

Trochę wykopalisko, ale udało mi się zrobić coś takiego na raspianie, a to przecież jest przodek debiana;)

Kod:

#!/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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)