Áttekintés
Ez a cikk a szokásos lépéseket írja le egy olyan partner számára, aki egy NVR-szerű hardverterméket – egy beágyazott számítógépet (itt “NVR”-nek nevezzük) egy előre telepített Server alkalmazással. Tipikusan egy ilyen NVR egy Linux-alapú számítógép ARM CPU-val.
Egy ilyen termék elkészítésének alapvető lépései a következők:
- Hardver kiválasztása
- Platform
- Tároló
- Linux íz kiválasztása
- Kiszolgáló alkalmazás telepítése
- Extrafunkciók implementálása
- Támogatási politika kialakítása
Az alábbiakban ezeket a lépéseket részletezzük.
Hardver kiválasztása
A termék sikeréhez költséghatékonynak kell lennie, és biztosítania kell a szükséges teljesítményt – támogatnia kell a kívánt számú kamerát a kívánt bitrátával/felbontással. A használt hardver legalább 1 GB RAM-mal és ARM Cortex A7 vagy magasabb szintű lapkakészlettel kell rendelkeznie.
Először ajánlott tanulmányozni a támogatott ARM platformok teljesítményét (az ilyen platformok listáját lásd az ARM támogatási szabályzatában), majd kiválasztani a követelményekhez legközelebb álló platformot.
Platform
A kiválasztott támogatott ARM platform a következők egyikeként használható:
- egy készen vásárolható számítógép (pl. egy szabványos Raspberry Pi alaplap), esetleg egyedi tokkal és tápegységgel;
- referenciaként az alaplapot tartalmazó egyedi számítógép tervezéséhez, amely további hardverkomponenseket, például perifériás interfészeket vagy merevlemez-vezérlőket tartalmazhat.
Ha az NVR várhatóan a kiszolgáló alkalmazáson kívül további szoftvereket is tartalmaz majd a fedélzeten, például a felhasználó számára webes felületet biztosító webszerver, videóelemző szoftver (pl. egy VMS plugin és/vagy annak backendje) vagy hasonló, gondoskodjon arról, hogy elegendő RAM és CPU feldolgozási teljesítmény álljon rendelkezésre ennek fedezésére.
A videó átkódolása a korlátozott számítási teljesítmény miatt nem támogatott ARM-eszközökön. Emellett egyes függőségek, mint például az OpenSSL, kompatibilitási problémákat okozhatnak. Ha a kezdeti elemzés azt mutatja, hogy egy tipikus ARM-alapú platform nem biztosítja a szükséges teljesítményt, akkor egy x64 platform is szóba jöhet.
A platform tárolási teljesítményének elég jónak kell lennie a tervezett terheléshez. Például ismert, hogy az olyan megoldások, mint a SATA-over-USB, gyenge HDD-teljesítményt eredményezhetnek, ami nem elegendő a szükséges számú kamera rögzítéséhez.
A platform hálózati teljesítményének elég jónak kell lennie a tervezett terheléshez. Ismert például, hogy az olyan megoldások, mint a szoftveralapú Ethernet implementáció sok CPU-erőforrást vesz igénybe, és így a kamerák rögzítése vagy az Ügyfelek felé történő streamelés során képkocka-kiesésekhez vagy egyéb problémákhoz vezethet. Emellett az USB hubon keresztül Ethernet-et megvalósító hardvermodellek a meghirdetettnél kisebb hálózati sávszélességgel rendelkezhetnek.
A platformnak rendelkeznie kell valós idejű óra (RTC) hardverrel, és/vagy engedélyezni kell a hálózaton keresztüli időszinkronizálást (pl. az NTP protokoll segítségével) – a VMS helyes működéséhez az operációs rendszer dátumának és idejének helyesnek kell lennie. Ha nincs hardveres RTC, és az egyetlen dátum/időforrás a tervek szerint a hálózat lesz, ajánlott, hogy az eszköz egyáltalán ne induljon el, ha nem tudja szinkronizálni a dátumot/időt.
Tárolás
Győződjön meg arról, hogy a fájlrendszeren elegendő hely van a VMS megfelelő működéséhez. A szerver a következő tárolóhelyeket használja:
- VMS telepítés – binárisok és dinamikus könyvtárak (.so fájlok)
- A /opt/<vendor>/mediaserver/
- Szükséges hely: kiszámítható a disztribúcióban lévő megfelelő fájlok teljes méretének mérésével, némi hozzáadott tartalékkal; minél nagyobb a tartalék – annál kisebb az esélye a későbbi verziókra való frissítéssel kapcsolatos problémáknak. Általában 30%-os tartalék ajánlott.
- Ha nincs elég tárhely a /opt-on, a .so fájlok szimlinkeken keresztül áthelyezhetők egy másik helyre, beleértve a FAT32 tárolót is (de ebben az esetben csak azok a fájlok helyezhetők át, amelyek nem szimlinkek).
- Szerver adatbázis fájlok – tárolja a kamerák és más szerverek adatait, eseménynaplókat stb.
- Tipikusan a /opt/<vendor>/mediaserver/var/ címen található; a Szerver konfigurációs fájlban módosítható.
- Ext4 fájlrendszert igényel
- Szükséges hely: a VMS rendszerben lévő kamerák és Szerverek számától függ, de általában legalább 500 MB ajánlott.
- Szerver Analytics adatbázis – az Analytics pluginek által generált Video Analytics metaadatokat tárolja
- Általában a /opt/<vendor>/mediaserver/var/data címen található; a Szerver konfigurációs fájlban módosítható.
- Szükséges hely: attól függ, hogy az Analytics Pluginok használatban vannak-e ezen a kiszolgálón, és hogy a Pluginok mennyi metaadatot küldenek. Általában a videóarchívum tárolási méretének 20%-a ajánlott, ha ezen a kiszolgálón Analytics Plugins használatban van.
- Szerver naplók
- A /opt/<vendor>/mediaserver/var/log/
- A mediaserver segítségével áthelyezhető.conf.
- A naplók automatikusan felülíródnak egy ciklusban.
- Szükséges hely: legalább 260 MB ajánlott.
- MEGJEGYZÉS: Azt vettük észre, hogy bizonyos ARM eszközökön (pl., Raspberry Pi 3), a belső flash memória (ebben az esetben a Micro SD) nem volt elég jó a naplók befogadására. A rendszer akár 4 másodpercre is lefagyott. Az ilyen eszközök esetében javasoltuk a naplók átirányítását a videoarchívummal azonos helyre.
- Videoarchívum – a kamerák által rögzített videót tárolja
- Általában a /opt/<vendor>/mediaserver alatt található; a szerver konfigurációs fájlban módosítható.
- A rendszerpartíciót valószínűleg alapértelmezés szerint korlátozzák a rögzítésben, hacsak nincs legalább 10 GB szabad hely.
- Belső flashmemória (eMMC) vagy SD-kártya
- Becsülje meg, hogy hány írási ciklust bír el a memória. A videoarchívum automatikusan felülírja önmagát egy ciklusban, ezért egy írási ciklus időtartamát úgy lehet kiszámítani, hogy a szabad helyet elosztjuk a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájával.
- Győződjön meg arról, hogy a memória áteresztőképessége elegendő a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájához, 30%-os biztonsági tartalékkal.
- Belső HDD vagy SSD
- Győződjön meg arról, hogy a lemez áteresztőképessége elegendő a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájához, 30%-os biztonsági tartalékkal.
- Külső NAS
- Győződjön meg arról, hogy a hálózati adapter tényleges sávszélessége elegendő a kiszolgálón rögzítés alatt álló összes kamera összesített bitrátájának 2-vel való szorzatához (mivel a kamerák feltehetően ugyanazon a hálózati adapteren keresztül küldik streamjeiket a kiszolgálóra), 30%-os biztonsági tartalékkal.
- Kiszolgáló alkalmazás frissítőfájljai
- A frissítéshez a Kiszolgáló alkalmazásnak le kell töltenie az újabb verzióját, és azt ki kell csomagolni.
- A /tmp/
- Szükséges hely: a csomagolt Kiszolgáló elosztási fájl teljes mérete szorozva 2,6-tal; ez tartalmazza a tartalékot. Több hely ajánlott, hogy minimalizálja a jövőbeli verziókra való frissítéssel kapcsolatos problémák esélyét.
- OS ideiglenes fájlok
- Tipikusan a /tmp/
- Szükséges hely: legalább 100 MB ajánlott, nem számítva a Server alkalmazás frissítési fájljaihoz szükséges helyet (lásd fent).
A fent felsorolt dolgok többsége a Server konfigurációs fájlban más helyre is beállítható: /opt/<vendor>/mediaserver/etc/mediaserver.conf
Mivel a tipikus SD-kártya tároló nem megbízható és közismerten meghibásodik intenzív írási-olvasási műveletek során, javasoljuk, hogy az operációs rendszert telepítse és a videóarchívumot merevlemez(ek)re tárolja. Ha SSD/merevlemez vagy SD-kártya jöhet szóba a videoarchívum tárolására, mérje fel annak többszörös újraírási műveletekre való képességét a kívánt támogatott kamera tipikus bitrátájának és a támogatott kamerák kívánt számának szorzatával.
Egy Raspberry Pi 3 B+ esetében például:
- Használjon USB-SATA adaptert és külső merevlemezt az archívumhoz.
- Telepítse az operációs rendszert (Raspbian) egy külső merevlemezre. A részletekért lásd a Hogyan indítsuk el a Raspberry Pi-t USB-s tömegtárolóról című cikket. Ezt a folyamatot attól függően kell automatizálni, hogy az ARM eszközöket hogyan fogjuk forgalmazni: merevlemezzel vagy merevlemez nélkül:
- Keménylemezzel – készíts egy előre konfigurált képet a telepített VMS-szel és klónozd a merevlemezekre.
- Keménylemez nélkül – létre kell hoznod egy sor szkriptet, amely formázza a HDD-t, másolja az OS-t és elvégzi az összes szükséges finomítást. Ez egy meglehetősen összetett és időigényes feladat.
Válassza ki a Linux ízét
Egy adott NVR-hez általában többféle Linux operációs rendszer választható:
- “Busybox” – csak Linux kernel és a parancssori eszközök alapvető készlete; viszonylag alacsony teljesítményű NVR-eken, például “edge” kamerákon (kamerák, amelyeken a VMS Server fut) használják.
- Szokásos Debian, vagy annak valamelyik változata, mint például az Ubuntu.
- A Debian vagy egy másik Linux-disztribúció módosított változata, amelyet általában az eszközgyártó módosít (pl, Raspbian a Raspberry Pi számára).
Általában ajánlott olyan Linux-változatot választani, amely az NVR alapjául szolgáló platform natív választása. Például, ha egy, a Raspberry Pi hardveréhez hasonló NVR-t fejlesztünk (vagy akár pontosan a Raspberry Pi alaplapját használjuk), ajánlott a Raspbian-t választani.
Ha több, különböző csomagkészletekkel rendelkező Linux-disztribúció áll rendelkezésre az eszközhöz, akkor a legkevésbé nehézkes ajánlott. Ha például nem tervezünk GUI-t megjeleníteni az NVR-en, akkor nincs szükség az X Window Systemre.
Győződjön meg arról, hogy a Linux verzió és a hozzá tartozó csomagkészlet megfelel-e a VMS követelményeinek. ARM-alapú eszközök esetén tekintse meg az ARM támogatási irányelvben megadott operációs rendszerre vonatkozó részleteket.
Kiszolgáló alkalmazás telepítése
Az NVR megfelelő Linux operációs rendszerrel történő betöltése után a kiszolgáló alkalmazást kell telepíteni az NVR-re. Alapvetően két lehetőség van:
- Debian alapú operációs rendszer esetén: telepítse a hivatalos .deb csomagot a VMS disztribúcióból a dpkg segítségével.
- Lásd a VMS eszközre történő telepítésének részletes útmutatóját: ARM SBC telepítési útmutató
- Hogyan fog elindulni a szerver indításkor, és ha a disztribúció system.d támogatása nem megfelelő?
- Hová veszi a szerver a telepített Linuxból hiányzó .so könyvtárakat?
- A szabványos VMS automatikus frissítési rendszer engedélyezve lesz?
A kevésbé tipikus operációs rendszer beállításoknál az 1. és 2. lehetőség valamilyen kombinációjára lehet szükség.
Extra funkciók megvalósítása
Az NVR tipikusan nem csak egy szabványos Linux számítógép a telepített Server alkalmazással – gyakran további funkciókat biztosít a felhasználó számára:
- Hardveres gombok, LED-ek vagy akár beágyazott kijelzők.
- Egy webes felület, amely lehetővé teszi az NVR testreszabását a Server alkalmazás saját webes felületén keresztül történő beállításán túl, például
- hálózati beállítások:
- rendszeridő és időzóna;
- Videokimenet (pl., HDMI), amely megjelenít egy GUI-t vagy legalább egy üdvözlő képernyőt az alapvető konfigurációs értékekkel, például az NVR IP-címével;
- a VMS-szel párhuzamosan futó kiegészítő szoftver, például egy konfigurációs démon vagy egy videóelemző backend.
- Ha a kiegészítő szoftver jelszóalapú hitelesítéssel rendelkezik a végfelhasználó számára, fontolja meg a jelszószinkronizáció megvalósítását, hogy a VMS-szerver jelszava mindig ugyanaz legyen, mint a kiegészítő szoftver jelszava. Ha a felhasználónak ssh-t kínálnak az NVR eléréséhez, fontolja meg annak jelszavának szinkronizálását is.
- További finomítások, például a videó (GPU) memória minimalizálása. Például a Raspberry Pi 3 B+ esetében állítsa a GPU memóriáját 16 MB-ra. A részletekért lásd a Raspberry Pi dokumentációját.
Az ilyen funkciók megvalósításához szükség lehet a Server alkalmazást vezérlő szkriptek írására vagy módosítására, vagy további programok írására C/C++ nyelven.
Időszinkronizálás
Győződjön meg arról, hogy az NVR rendelkezik beépített CMOS akkumulátorral, hogy áramkimaradás esetén ne álljon vissza az órája. A Raspberry Pi 3 B+ például nem rendelkezik beépített CMOS akkumulátorral. Ha az eszköz újraindul, az idő visszaáll, és ez hibás archívumírást eredményez. Ennek elkerülésére van néhány lehetőség:
- Győződjön meg róla, hogy az idő szinkronizálásához csatlakozik az internetre.
- Ha zárt hálózatról van szó, akkor be kell állítania egy NTP-kiszolgálót.
- Adjunk hozzá egy valós idejű óra (RTC) modult a kártyához, és konfiguráljuk előzetesen. Lásd: Valós idejű óra hozzáadása a Raspberry Pi-hez.
Ház keresése/építése az NVR-hez
Szükséges egy olyan ház keresése vagy tervezése, amely az összes fent említett hardverhez illeszkedik.
Kiterjedt terhelés/stresszteszt elvégzése
Azért, hogy minden együtt működjön, meg kell tervezni egy intenzív stressztesztet, amely biztosítja, hogy nincs túlmelegedés vagy az alkatrészek meghibásodása. A tesztnek képesnek kell lennie az összes rendszerkomponens, például a CPU, a memória, a merevlemez(ek), a hálózat és a Wi-Fi (ha szükséges) stb. terhelésére.
Támogatási politika kialakítása
Az NVR-t a végfelhasználóknak fogják szállítani, és nekik mindenképpen szükségük lesz valamilyen technikai támogatásra. A VMS-szállító támogató csapata nem tud ilyen szolgáltatásokat nyújtani a végfelhasználóknak, ezért ki kell dolgozni egy ilyen támogatás nyújtására vonatkozó szabályzatot, például egy online ügyfélszolgálatot, egy közösségi fórumot vagy hasonlót.
Ha az NVR-szállító támogatási csapata biztos abban, hogy az adott probléma nem magának az NVR-nek a sajátosságaihoz kapcsolódik, hanem inkább a VMS-ben jelentkező probléma, akkor a fent említett ARM támogatási politikának megfelelően kérhet támogatást a VMS-szállítótól, majd ennek a támogatási ügynek az eredményét felhasználhatja a végfelhasználó támogatási kérésének kielégítésére.
Kérdések
Ha bármilyen kérdése van ezzel a témával kapcsolatban, vagy szeretné megosztani tapasztalatait a közösség többi tagjával vagy csapatunkkal, kérjük, látogasson el és vegyen részt a támogatási közösségünkben, vagy forduljon helyi viszonteladójához.