Saugos kamerų apžvalga su MPV

Posted: 2020-06-08 in Pezalai
Žymos:,

Su kaimynu esam apsikrovę Dahua kamerom. Taip taip, tom pačiom nesaugiom, kurios pigios ir jomis saugomas Lietuvos pasienis bei daug kitų objektų, o kinai per jas viską mato 😀 A man nuoširdžiai dzin, tegu kinai žiūri ir klauso mano kiemą. Kaip privatus asmuo, galiu sau tai leisti ir kitiems taip pat rekomenduoju.

Apsaugos kameros vaizdas naktį su šunimis | Darau, blėKažkada pasakojau, kad man labai patiko QVR Pro softas ant QNAP serverėlio. Tiesa, patiko tol kol buvo iki keturių kamerų ir sveikas RAIDas. Kai sukroviau daugiau kamerų, o paskui dar pabiro vienas hardas, QVR Pro pradėjo tiesiog nesusitvarkyti su srautais, susigadino indeksą ir galiausiai net perkonfigūruotas iš naujo nustojo įrašinėti kamerų srautus į diskus.

Susinervinau, be abejo. Pradėjau ieškoti alternatyvų. Geriausia alternatyva pasirodė tuo pačiu ir pati paprasčiausia: naikinti bet kokį softą NAS’e, o srautus leisti į jį rašinėti pačioms kameroms: duodi joms NFS sharą ir viskas. Kameros pačios įrašinėja srautus, kapoja failus nurodyto ilgio gabalais ir dar įrašinėja kokiu nori formatu. Pvz. mano seniausia kamera turi H265, bet jeigu ją perjungdavau į šitą encoderį, tai QVR Pro nerodydavo vaizdo: nesuprasdavo, kad kamera gali ir H265 naudoti. Tekdavo palikt H264. Kai QVR Pro naudot nustojau, kameros pačios rūpinasi ir formatu, ir įrašymu.

Plius, jei naudodavau QVR Pro klientą, jis NASą apkraudavo dar papildomai, nes anas vargšiukas ne tik viską siurbdavo ir įrašinėdavo, bet dar būdavo priverstas ir pertransliuot. Aišku, tas klientas tikrai patogus ir gražus, smagu ten tuos kamerų vaizdus visaip vartyti ir įrašus atsisukinėti. Bet, pripažinkim, šitos fyčios yra tik žaisliukas, kuris realiame gyvenime nelabai reikalingas. Nice to have, bet nebūtina.

Visgi kartais sėdėdamas prie kompo vieną iš trijų monitorių paskiriu kamerų vaizdams: tiesiog for fun. Pamatau, kad paštinykė atvažiuoja (atsiprašau, laiškinykė), kada kaimynė šunį veda pavedžiot, kada Barbora atlekia, kaip vaikams dūkti sekasi ir panašiai. Smagu ir tiek.

Kuo stebėti kameras Linuxe? Visos jos turi RTSP srautus. Dahua turi vienodą formatą visoms kameroms, kitų gamintojų kažkokį kitokį. Jei nežinote savo kameros RTSP srauto URL, programėlė Onvifer telefone padės tuos URLus sužinoti.

Nors ir retai, bet kartais kokį offline video aš savo kompe pažiūriu. Tada naudoju MPV grotuvą – jis pas mane kiek geriau veikia, nei klasikinis mplayer, bet yra toks pat minimalistinis. VLC nelabai mėgstu, jis toks gargaras, bet kartais geriau susitvarko su nestabiliais vaizdo srautais, kurie trūkinėja ar generuoja false EOF.

Dahua kameroms MPV tinka puikiausiai, nes tai yra ffmpeg frontendas. Taigi galima naudoti visus ffmpeg palaikomus filtrus: vaizdas vaizde, vaizdas šalia vaizdo, vertikalios ir horizontalios krūvos ir taip toliau.

Štai skriptuko pavyzdys keturioms Dahua kameroms:

#!/bin/bash
mpv \
    rtsp://user:pass@192.168.x.x1:554/cam/realmonitor?channel=1\&subtype=0 \
    --external-file=rtsp://user:pass@192.168.x.x2:554/cam/realmonitor?channel=1\&subtype=0 \
    --external-file=rtsp://user:pass@192.168.x.x3:554/cam/realmonitor?channel=1\&subtype=0 \
    --external-file=rtsp://user:pass@192.168.x.x4:554/cam/realmonitor?channel=1\&subtype=0 \
    --lavfi-complex='[vid1] scale=1920x1080 [vid1_scale]; [vid2] scale=1920x1080 [vid2_scale] ;[vid1_scale] [vid2_scale] hstack [t1] ; [vid3] [vid4] hstack [t2] ; [t1] [t2] vstack [vo]'

Čia dar toks pavyzdys panaudotas, kad dvi kameros yra 4 mpx rezoliucijos, o kitos dvi – 2 mpx (t.y. Full HD). Kad susidėliotų gražus keturių kamerų vaizdas, reikia, kad visi keturi srautai būtų vienodos raiškos, taigi yra panaudotas scale filtras papildomai. Tiesa, čia nėra pats geriausias variantas. Geresnis yra žinoti, kokio dydžio monitoriuje bus peržiūrimas vaizdas ir iš karto downscalinti visų kamerų vaizdus, kad būtų po ketvirtį ekrano. Sakykim, kad vaizdas bus žiūrimas 1920×1080 ekrane, tai kiekvienai kamerai bus skiriamas 960×540 plotelis. Tada darom šitaip:

#!/bin/bash
mpv \
    rtsp://user:pass@192.168.x.x1:554/cam/realmonitor?channel=1\&subtype=0 \
    --external-file=rtsp://user:pass@192.168.x.x2:554/cam/realmonitor?channel=1\&subtype=0 \
    --external-file=rtsp://user:pass@192.168.x.x3:554/cam/realmonitor?channel=1\&subtype=0 \
    --external-file=rtsp://user:pass@192.168.x.x4:554/cam/realmonitor?channel=1\&subtype=0 \
    --lavfi-complex='[vid1] scale=960x540 [vid1_scale]; [vid2] scale=960x540 [vid2_scale]; [vid3] scale=960x540 [vid3_scale]; [vid4] scale=960x540 [vid4_scale]; [vid1_scale] [vid2_scale] hstack [t1] ; [vid3_scale] [vid4_scale] hstack [t2] ; [t1] [t2] vstack [vo]'

Taip, aišku, galim susidėliot bet kokį vaizdą iš bet kokio kamerų kiekio. Arba galim kelis filmus vienu metu žiūrėt, tik dar nežinau, kas su garsu gaunasi. Shift+S padaro ekrano nuotrauką, jei to reikia. Pavyzdukas su keturiais mėgstamais serialais:

Keturi serialai | Darau, blė

Tiesa, jeigu jūsų kompiuteris pakankamai naujas ir MPV randa, kad gali naudoti aparatūrinį dekoderį, gali nerodyti vaizdo. Tada pabandykit mpv –hwdec=no – turėtų būt gerai. Esmė tame, kad aparatūriškai dekoduojamam srautui ffmpeg negali taikyti filtrų – srautas tiesiog nueina „kažkur“ ir nebebūna pasiekiamas programiniam apdorojimui. Žinoma, tada galima tiesiog keturis (ar daugiau) MPV langų susidėliot ekrane ir tiek. Bet daug smagiau viską sudėti gražiai į vieną langą. Pašalinis poveikis – smarkiai dirbantis CPU.

Tai tiek, gal kam pravers.

Komentarai
  1. Rimas parašė:

    O kodėl Dahua, o ne kitas šnipų įrankis – Hikvision? Pačiam ir teks rinktis ir nerandu lemiamų argumentų link vienos ar kitos pusės.

    • Darau, Blė parašė:

      Dahua pigesnės ir neturi regioninių apribojimų. Plius turiu tašką, kur gaut, tai tiek tų argumentų. Visa kita tai abiejų gamintojų gan panašiai. Na, Hikvisiono Darkfighter eina aukštesnėm raiškom, nei Dahua Starlight, bet aš jau įsitikinau, kad 2mpx vs 4mpx lemiamos reikšmės neturi.

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti /  Pakeisti )

Google photo

Jūs komentuojate naudodamiesi savo Google paskyra. Atsijungti /  Pakeisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti /  Pakeisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti /  Pakeisti )

Connecting to %s

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.