Aufbau von Linux-basierten NVRs

Übersicht

Dieser Artikel beschreibt allgemeine Schritte für einen Partner, der ein NVR-ähnliches Hardware-Produkt herstellen möchte – einen eingebetteten Computer (hier „NVR“ genannt) mit einer vorinstallierten Server-Anwendung. Typischerweise ist ein solcher NVR ein Linux-basierter Computer mit einer ARM-CPU.

Die grundlegenden Schritte zur Herstellung eines solchen Produkts umfassen die folgenden:

  • Hardware auswählen
    • Plattform
    • Speicher
  • Linux-Variante auswählen
  • Server-Anwendung installieren
  • Zusätzliche Funktionen implementieren
  • Support-Richtlinie einrichten

Diese Schritte werden im Folgenden detailliert beschrieben.

Auswahl der Hardware

Um ein Produkt erfolgreich zu machen, sollte es kostengünstig sein und die erforderliche Leistung bieten – die gewünschte Anzahl von Kameras mit der gewünschten Bitrate/Auflösung unterstützen. Die verwendete Hardware sollte mindestens 1 GB RAM und einen ARM Cortex A7 Chipsatz oder höher haben.

Es wird empfohlen, zunächst die Leistung der unterstützten ARM-Plattformen zu studieren (siehe ARM Support Policy für die Liste solcher Plattformen) und dann eine Plattform auszuwählen, die Ihren Anforderungen am nächsten kommt.

Plattform

Die gewählte unterstützte ARM-Plattform kann als eine der folgenden verwendet werden:

  • ein fertiger Computer (z.B. eine Standard-Raspberry-Pi-Hauptplatine), möglicherweise mit einem kundenspezifischen Gehäuse und Netzteil;
  • eine Referenz für die Entwicklung eines kundenspezifischen Computers mit der Hauptplatine, die zusätzliche Hardwarekomponenten wie Peripherieschnittstellen oder Festplattencontroller enthalten kann.

Wenn erwartet wird, dass der NVR neben der Serveranwendung zusätzliche Software an Bord hat, wie z. B. einen Webserver, der eine Webschnittstelle für den Benutzer bereitstellt, Videoanalysesoftware (z. B. ein VMS-Plugin und/oder sein Backend) oder ähnliches, stellen Sie sicher, dass Sie genügend RAM und CPU-Rechenleistung hinzufügen, um dies abzudecken.

Video-Transcoding wird auf ARM-Geräten aufgrund der begrenzten Rechenleistung nicht unterstützt. Außerdem kann es bei einigen Abhängigkeiten wie OpenSSL zu Kompatibilitätsproblemen kommen. Wenn die anfängliche Analyse zeigt, dass eine typische ARM-basierte Plattform nicht die erforderliche Leistung erbringt, kann eine x64-Plattform in Betracht gezogen werden.

Die Speicherleistung der Plattform sollte für die geplante Belastung ausreichend sein. Es ist beispielsweise bekannt, dass Lösungen wie SATA-over-USB zu einer schlechten Festplattenleistung führen können, die für die Aufzeichnung der erforderlichen Anzahl von Kameras nicht ausreicht.

Die Netzwerkleistung der Plattform sollte für die geplante Belastung ausreichend sein. Es ist beispielsweise bekannt, dass Lösungen wie die softwarebasierte Ethernet-Implementierung viele CPU-Ressourcen beanspruchen und daher zu Frame-Drops bei der Aufzeichnung von Kameras oder dem Streaming zu Clients oder anderen Problemen führen können. Darüber hinaus können Hardware-Modelle, die Ethernet über einen USB-Hub implementieren, eine geringere als die angegebene Netzwerkbandbreite aufweisen.

Die Plattform sollte mit einer Echtzeituhr (RTC) ausgestattet sein und/oder die Zeitsynchronisation über das Netzwerk (z. B. über das NTP-Protokoll) sollte aktiviert sein – damit das VMS korrekt funktioniert, müssen Datum und Uhrzeit des Betriebssystems korrekt sein. Wenn keine Hardware-RTC vorhanden ist und die einzige Datums-/Zeitquelle das Netzwerk sein soll, wird empfohlen, dass das Gerät den Start verweigert, wenn es das Datum/die Uhrzeit nicht synchronisieren kann.

Speicher

Stellen Sie sicher, dass auf dem Dateisystem genügend Platz vorhanden ist, damit der VMS ordnungsgemäß funktioniert. Der Server verwendet die folgenden Speicherorte:

  • VMS-Installation – Binärdateien und dynamische Bibliotheken (.so-Dateien)
    • Speicherort: /opt/<vendor>/mediaserver/
    • Bedarf an Speicherplatz: kann anhand der Gesamtgröße der jeweiligen Dateien in der Distribution mit einem gewissen Spielraum berechnet werden; je höher der Spielraum – desto geringer die Wahrscheinlichkeit von Problemen bei der Aktualisierung auf zukünftige Versionen. Im Allgemeinen wird ein Spielraum von 30 % empfohlen.
    • Wenn der Speicherplatz in /opt nicht ausreicht, können .so-Dateien über Symlinks an einen anderen Ort verschoben werden, einschließlich FAT32-Speicher (in diesem Fall können jedoch nur Dateien verschoben werden, die keine Symlinks sind).
  • Server-Datenbankdateien – speichert Informationen über Kameras und andere Server, Ereignisprotokolle usw.
    • Befindet sich normalerweise unter /opt/<vendor>/mediaserver/var/; kann in der Serverkonfigurationsdatei geändert werden.
    • Erfordert ext4-Dateisystem
    • Erforderlicher Speicherplatz: hängt von der Anzahl der Kameras und Server im VMS-System ab, aber im Allgemeinen werden mindestens 500 MB empfohlen.
  • Server-Analytics-Datenbank – speichert Videoanalyse-Metadaten, die von Analytics-Plugins erzeugt werden
    • Befindet sich normalerweise unter /opt/<vendor>/mediaserver/var/data; kann in der Server-Konfigurationsdatei geändert werden.
    • Bedarf an Speicherplatz: hängt davon ab, ob Analytics Plugins auf diesem Server verwendet werden und wie viele Metadaten die Plugins senden. Im Allgemeinen werden 20% des Videoarchivspeichers empfohlen, wenn Analytics Plugins auf diesem Server verwendet werden.
  • Server Logs
    • Befindet sich unter /opt/<vendor>/mediaserver/var/log/
      • Kann über mediaserver.conf.
    • Logs werden automatisch in einer Schleife überschrieben.
    • Erforderlicher Speicherplatz: mindestens 260 MB wird empfohlen.
    • Hinweis: Wir haben festgestellt, dass auf bestimmten ARM-Geräten (z.B., Raspberry Pi 3), der interne Flash-Speicher (in diesem Fall Micro SD) nicht gut genug war, um Protokolle aufzunehmen. Das System fror dann bis zu 4 Sekunden lang ein. Wir haben empfohlen, die Protokolle für solche Geräte an denselben Speicherort wie das Videoarchiv umzuleiten.
  • Videoarchiv – speichert die aufgezeichneten Videos von Kameras
    • Normalerweise unter /opt/<vendor>/mediaserver; kann in der Serverkonfigurationsdatei geändert werden.
    • Die Systempartition wird wahrscheinlich standardmäßig für die Aufzeichnung gesperrt, wenn nicht mindestens 10 GB freier Speicherplatz vorhanden ist.
    • Interner Flash-Speicher (eMMC) oder SD-Karte
        • Schätzen Sie ab, wie viele Schreibzyklen der Speicher verkraften kann. Das Videoarchiv überschreibt sich automatisch in einer Schleife, daher kann die Dauer eines einzelnen Schreibzyklus berechnet werden, indem der freie Speicherplatz durch die kombinierte Bitrate aller Kameras, die auf dem Server aufgezeichnet werden, dividiert wird.
        • Stellen Sie sicher, dass der Speicherdurchsatz für die kombinierte Bitrate aller auf dem Server aufgezeichneten Kameras ausreicht, mit einer Sicherheitsmarge von 30 %.
    • Interne HDD oder SSD
        • Stellen Sie sicher, dass der Festplattendurchsatz für die kombinierte Bitrate aller auf dem Server aufgezeichneten Kameras ausreicht, mit einer Sicherheitsmarge von 30 %.
    • Externes NAS
        • Stellen Sie sicher, dass die tatsächliche Bandbreite des Netzwerkadapters für die kombinierte Bitrate aller auf dem Server aufgezeichneten Kameras multipliziert mit 2 ausreicht (da die Kameras ihre Streams vermutlich über denselben Netzwerkadapter an den Server senden), mit einer Sicherheitsmarge von 30 %.
  • Aktualisierungsdateien der Serveranwendung
    • Um aktualisieren zu können, muss die Serveranwendung ihre neuere Version herunterladen und entpacken.
    • Speicherort: /tmp/
    • Bedarf an Speicherplatz: die Gesamtgröße der gepackten Server-Distributionsdatei multipliziert mit 2,6; dies beinhaltet den Spielraum. Mehr Platz kann empfohlen werden, um die Wahrscheinlichkeit von Problemen bei der Aktualisierung auf zukünftige Versionen zu minimieren.

  • Temporäre Dateien des Betriebssystems
    • Typischerweise unter /tmp/
    • Erforderlicher Speicherplatz: mindestens 100 MB werden empfohlen, ohne den erforderlichen Platz für die Aktualisierungsdateien der Serveranwendung (siehe oben).

Die meisten der oben aufgeführten Dinge können in der Server-Konfigurationsdatei an einem anderen Ort gespeichert werden: /opt/<vendor>/mediaserver/etc/mediaserver.conf

Da der typische SD-Kartenspeicher nicht zuverlässig ist und bekanntermaßen bei intensiven Lese- und Schreibvorgängen ausfällt, empfehlen wir, das Betriebssystem zu installieren und das Videoarchiv auf einer Festplatte(n) zu speichern. Wenn eine SSD/Festplatte oder SD-Karte für die Speicherung des Videoarchivs in Betracht gezogen wird, bewerten Sie deren Fähigkeit für mehrfache Wiederbeschreibungsvorgänge anhand der typischen Bitrate einer gewünschten unterstützten Kamera multipliziert mit der gewünschten Anzahl der unterstützten Kameras.

Zum Beispiel für den Raspberry Pi 3 B+:

    • Verwenden Sie einen USB-SATA-Adapter und eine externe Festplatte für das Archiv.
    • Installieren Sie das Betriebssystem (Raspbian) auf einer externen Festplatte. Siehe den Artikel How to boot your Raspberry Pi from a USB mass storage device für Details. Dieser Prozess sollte automatisiert werden, je nachdem, wie die ARM-Geräte verteilt werden sollen: mit oder ohne Festplatte:
      • Mit Festplatte – erstellen Sie ein vorkonfiguriertes Image mit installiertem VMS und klonen Sie es auf die Festplatten.
      • Ohne Festplatte – Sie müssen eine Reihe von Skripten erstellen, die die Festplatte formatieren, das Betriebssystem kopieren und alle notwendigen Anpassungen vornehmen. Dies ist eine ziemlich komplexe und zeitaufwändige Aufgabe.

Wählen Sie die Linux-Variante

Es gibt in der Regel mehrere Optionen für das Linux-Betriebssystem auf einem bestimmten NVR:

  • „Busybox“ – nur der Linux-Kernel und die grundlegenden Befehlszeilentools; wird auf relativ leistungsschwachen NVRs wie z. B. „Edge“-Kameras (Kameras, auf denen der VMS-Server läuft) verwendet.
  • Standard-Debian oder eine seiner Varianten wie Ubuntu.
  • Modifizierte Version von Debian oder einer anderen Linux-Distribution, in der Regel vom Gerätehersteller modifiziert (z.B., Raspbian für Raspberry Pi).

Generell wird empfohlen, eine Linux-Variante zu wählen, die für die Plattform, auf der der NVR basiert, geeignet ist. Wenn zum Beispiel ein NVR entwickelt wird, der in der Hardware dem Raspberry Pi ähnelt (oder sogar das exakte Raspberry Pi-Mainboard verwendet), wird empfohlen, Raspbian zu wählen.

Wenn mehrere Linux-Distributionen mit unterschiedlichen Paketsätzen für das Gerät verfügbar sind, wird die am wenigsten schwere empfohlen. Wenn zum Beispiel nicht geplant ist, eine grafische Benutzeroberfläche auf dem NVR anzuzeigen, wird das X Window System nicht benötigt.

Vergewissern Sie sich, dass die Linux-Version und ihre Pakete den Anforderungen des VMS entsprechen. Für ARM-basierte Geräte konsultieren Sie die Betriebssystemdetails, die in der ARM Support Policy angegeben sind.

Serveranwendung installieren

Nachdem der NVR mit einem geeigneten Linux-Betriebssystem geladen wurde, sollte die Serveranwendung auf dem NVR installiert werden. Es gibt grundsätzlich zwei Möglichkeiten:

  1. Für Debian-basierte Betriebssysteme: Installieren Sie das offizielle .deb-Paket der VMS-Distribution mit dpkg.
  • Siehe die detaillierte Anleitung zur Installation des VMS auf einem Gerät: ARM SBC-Installationsanweisungen
  • Für Busybox-basierte Betriebssysteme: Entpacken Sie die erforderlichen Dateien aus dem VMS-.deb-Paket in das gewünschte Verzeichnis, und kümmern Sie sich manuell um die folgenden Aspekte:
    • Wie wird der Server beim Booten gestartet und wenn die system.d-Unterstützung der Distribution nicht geeignet ist?
    • Woher nimmt der Server die .so-Bibliotheken, die im installierten Linux fehlen?
    • Wird das standardmäßige automatische VMS-Update-System aktiviert?

    Für weniger typische Betriebssystem-Konfigurationen kann eine Kombination der Optionen 1 und 2 erforderlich sein.

    Einführen zusätzlicher Funktionen

    Typischerweise ist ein NVR nicht nur ein Standard-Linux-Computer mit installierter Server-Anwendung – er bietet dem Benutzer oft zusätzliche Funktionen:

    • Hardware-Tasten, LEDs oder sogar eingebettete Anzeigen.
    • Eine Weboberfläche, die es Ihnen ermöglicht, den NVR über die Einrichtung der Server-Anwendung hinaus über die eigene Weboberfläche anzupassen, wie
      • Netzwerkoptionen: IP-Adresse, Subnetz, usw.;
      • Systemzeit und Zeitzone;
    • Videoausgang (z.B., HDMI), der eine grafische Benutzeroberfläche oder zumindest einen Begrüßungsbildschirm mit grundlegenden Konfigurationswerten wie der IP-Adresse des NVR anzeigt;
    • Zusätzliche Software, die parallel zum VMS läuft, wie z. B. ein Konfigurationsdämon oder ein Videoanalyse-Backend.
      • Wenn die zusätzliche Software über eine passwortbasierte Authentifizierung für den Endbenutzer verfügt, sollten Sie die Implementierung einer Passwortsynchronisierung in Betracht ziehen, damit das Passwort für den VMS-Server immer mit dem für die zusätzliche Software identisch ist. Wenn dem Benutzer ssh angeboten wird, um auf den NVR zuzugreifen, sollten Sie auch dessen Passwort synchronisieren.
    • Zusätzliche Optimierungen, wie die Minimierung des Video- (GPU-) Speichers. Setzen Sie beispielsweise beim Raspberry Pi 3 B+ den GPU-Speicher auf 16 MB. Siehe Raspberry Pi-Dokumentation für Details.

    Um solche Funktionen zu implementieren, kann es erforderlich sein, Skripte zu schreiben oder zu modifizieren, die die Server-Anwendung steuern, oder zusätzliche Programme in C/C++ zu schreiben.

    Zeitsynchronisation

    Stellen Sie sicher, dass der NVR über eine eingebaute CMOS-Batterie verfügt, um zu verhindern, dass seine Uhr im Falle eines Stromausfalls zurückgesetzt wird. Der Raspberry Pi 3 B+ hat zum Beispiel keine CMOS-Batterie eingebaut. Wenn das Gerät neu gebootet wird, wird die Uhrzeit zurückgesetzt, was zu einer falschen Archivierung führt. Um dies zu vermeiden, gibt es einige Möglichkeiten:

    • Stellen Sie sicher, dass das Gerät mit dem Internet verbunden ist, um die Zeit zu synchronisieren.
    • Wenn es sich um ein geschlossenes Netzwerk handelt, müssen Sie einen NTP-Server einrichten.
    • Fügen Sie ein Echtzeituhrmodul (RTC) zur Karte hinzu und konfigurieren Sie es vor. Siehe Hinzufügen einer Echtzeituhr zu Ihrem Raspberry Pi.

    Finden/Bauen eines Gehäuses für Ihren NVR

    Es ist notwendig, ein Gehäuse zu finden oder zu entwerfen, in das die gesamte oben erwähnte Hardware passt.

    Durchführen eines umfangreichen Last-/Stresstests

    Um sicherzustellen, dass alles zusammen funktioniert, ist es notwendig, einen intensiven Stresstest zu planen, um sicherzustellen, dass es keine Überhitzung oder Fehlfunktion der Komponenten gibt. Bei diesem Test sollten alle Systemkomponenten wie CPU, Arbeitsspeicher, Festplatte(n), Netzwerk und Wi-Fi (falls erforderlich) usw. belastet werden.

    Support-Politik festlegen

    Der NVR wird an seine Endbenutzer geliefert, und diese werden definitiv eine Art von technischem Support benötigen. Das Support-Team des VMS-Anbieters kann den Endbenutzern solche Dienste nicht anbieten, daher sollte eine Richtlinie für die Bereitstellung eines solchen Supports entwickelt werden, z. B. ein Online-Support-Desk, ein Community-Forum oder ähnliches.

    Wenn das Support-Team des NVR-Anbieters sicher ist, dass das bestimmte Problem nicht mit den Besonderheiten des NVR selbst zusammenhängt, sondern eher ein Problem im VMS ist, kann es den Support des VMS-Anbieters gemäß der oben erwähnten ARM-Support-Richtlinie anfordern und dann das Ergebnis dieses Support-Falls verwenden, um die Support-Anfrage eines Endbenutzers zu erfüllen.

    Fragen

    Wenn Sie Fragen zu diesem Thema haben oder Ihre Erfahrungen mit anderen Community-Mitgliedern oder unserem Team teilen möchten, besuchen Sie bitte unsere Support-Community und beteiligen Sie sich dort oder wenden Sie sich an Ihren lokalen Händler.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht.