Wie wir aus einer normalen IP-Kamera einen kleinen Cloud-Videorecorder gemacht haben



Das Thema Videoüberwachung ist für mich mit dem Aufkommen von Vorortwohnungen akut geworden. Im Internet finden Sie viele Informationen zur Organisation der Videoüberwachung. Leider waren die meisten Optionen darauf zurückzuführen, fertige Kits aus China zu kaufen. Von Freunden habe ich diesbezüglich viel Kritik gehört. Irgendwie war er selbst sogar an der Einrichtung der von Aliexpress gekauften Ausrüstung beteiligt. Irgendwo funktionierte die Hälfte der deklarierten Funktionen nicht wie angegeben, einige der Optionen funktionierten überhaupt nicht, obwohl der Registrar nicht billig war. Und es gab viele solche Bewertungen und Meinungen. Viele kritisieren auch die Tatsache, dass die Videos in chinesischen Cloud-Diensten gespeichert sind. Und dann kam der Gedanke - was ist, wenn Sie versuchen, Ihren eigenen DVR mit minimaler Funktionalität herzustellen? Und was? In diesem Moment begann ich mich mit Linux zu beschäftigen, schrieb Anwendungen mit elementarer Funktionalität auf Bash, experimentierte mit Web ... Im Prinzip alles, was Sie brauchen, um das Problem zu lösen. Kaum gesagt als getan.

Lass uns gehen. Eisenauswahl


Als Testperson wurde ein beliebter TP-LINK TL-MR3020-Router mit OPENWRT an Bord ausgewählt.



Eigenschaften des Routers:

  • 300 MHz MIPS-Prozessor;
  • 32 MB RAM;
  • Flash-Chip für 4 MB;
  • USB 2.0-Anschluss;
  • RJ-45-Port mit 100 MB Vollduplex;
  • GPIO-Pins, sowohl frei als auch mit LEDs;
  • GPIO-Pins ein- und ausschalten;

Die Kamera ist eine gewöhnliche chinesische HD IP-Kamera, die in China bestellt wurde. Wir machen Videos über das RTSP-Protokoll. Das Dienstprogramm openRTSP hat uns dabei geholfen. Es war Teil des OPENWRT-Repositorys und verfügte über alle erforderlichen Funktionen. Wir haben uns entschieden, mit dem Yandex.Disk-Clouddienst über das Webdav-Protokoll zu arbeiten. Dieser Dienst bietet jedem neuen Benutzer 10 GB freien Speicherplatz. Nun, dort können Sie nach Bedarf kaufen.

Essenz der Idee


Mit dem RTSP-Protokoll nehmen wir den Videostream von der IP-Kamera. Wir machen ein Pufferverzeichnis. Wir nehmen Videos darin auf. Mit dem CURL-Dienstprogramm über das Webdav-Protokoll senden wir Videos an die Cloud. In unserem Fall ist dies Yandex.Disk.

Versuchen Sie es


Nachdem wir die IP-Kamera über Ethernet mit dem Router verbunden hatten, starteten wir eine Testaufnahme eines 10-Sekunden-Clips im MP4-Format auf der Yandex-Festplatte:

OPENRTSP -V -B 51200 -b 200000 -4 -f 25 -d 10>/tmp/ya_disk/test.mp4 

Dann schickten sie es in die Cloud:

 curl -v -m 180 --stderr /tmp/log -k -u $email:$pass -T /tmp/ya_disk/test.mp4 https://webdav.yandex.ru/ 

Es funktioniert!


Die Tests begannen mit unterschiedlichen Clip-Längen, unterschiedlichen Aufzeichnungsintervallen und regelmäßigen Aufzeichnungen. Im Allgemeinen waren die Tests erfolgreich. Es gab jedoch ein Problem beim Aufzeichnen sehr kurzer Clips (in der Größenordnung von 5 Sekunden). Die Clips wurden mit einer höheren Geschwindigkeit aufgenommen und ihre Länge war geringer als der Satz. Sie lösten das Problem durch Bearbeiten der openRTSP-Quellen: Sie stellten sicher, dass das Programm den vom Benutzer eingegebenen fps-Wert strikt einhielt und nicht aus SDP entnommen wurde. Außerdem wurden Frames mit weniger als 100 Byte gelöscht.

Wir denken über die Funktionalität nach


Nach erfolgreichen Tests wurde beschlossen, eine Steuerungsschnittstelle zu erstellen. Zu dieser Zeit begann ich mich mit dem Web vertraut zu machen und beschloss, eine Webversion zu erstellen. Technologie-Stack auf der Benutzerseite (Frontend): HTML5, CSS3, JQUERY, AJAX. Auf der Eisenseite (Backend): UHTTPD, CGI, BASH. Sie wurden mit dem Design nicht schlau, sondern verwendeten die gekachelte Anordnung der Schaltflächen auf der Hauptseite.

Anwendung Home

Verwaltungs- und Dateneingabeseiten wurden mit JQUERY erstellt. Mit den ersten erfolgreichen Ergebnissen bei der Verwaltung eines Registrar- Routers haben wir begonnen, Funktionen hinzuzufügen. Vielleicht war es ein Fehler. Aufgrund von Unerfahrenheit haben wir das Testen vernachlässigt. Wenn es viele Funktionen gibt, ist es schwierig, sie zu testen. Aufgrund der mangelnden Disziplin beim Schreiben von Code zu Beginn der Entwicklung wird es immer schwieriger zu verstehen, was geschrieben wird. Von Zeit zu Zeit treten Fehler auf, wir beseitigen sie natürlich, aber es wäre viel einfacher, dies in früheren Entwicklungsstadien und in Phasen zu tun.

Also die Funktionalität:

  • Unterstützung für jede IP-Kamera;
  • Unterstützung für 3G / 4G-Modems;
  • Aufzeichnung auf Cloud-Speicher (kostenlos) und / oder auf einem USB-Laufwerk;
  • Periodische Aufzeichnung und / oder Bewegungsaufzeichnung;
  • Schleife zur Festplatte;
  • Einstellen der Länge der Walze;
  • Aufnahmemodi: nach Zeit, Bewegung, Tag, Nacht;
  • Autonome Arbeit bei Stromausfall (ca. 20 min);

Client-seitige Implementierung


Das Rekorder-Einstellungsmenü enthält 6 Tasten: WIFI, RECORDING, CAMERA, 3G / 4G, STORAGE und HELP. Also in der Reihenfolge:

WIFI




Hier können Sie den WLAN-Rekorder konfigurieren. WI-FI kann in zwei Modi arbeiten - "Client" und "Access Point". Im "Access Point" -Modus ist alles klar: Kanalnummer, SSID, Verschlüsselungstyp, Passwort. Im "Client" -Modus ist der Registrar mit einem beliebigen Wi-Fi-Zugangspunkt verbunden.

Dementsprechend wird in diesem Modus kein 3G / 4G-Modem benötigt. Damit der Benutzer den Registrar nicht verliert, wenn der Client eine Verbindung zum Access Point herstellt, haben wir den Repeater-Modus physisch implementiert.

Das einzige, worauf Sie achten müssen, ist, dass Sie beim Verbinden des Registrars mit dem Zugangspunkt überprüfen müssen, ob das mobile Gerät des Benutzers zu einem anderen Wi-Fi-Zugangspunkt „gesprungen“ ist, weil Der Wi-Fi-Registrar-Zugangspunkt verschwindet für kurze Zeit. Das Feld "Wiederherstellungsmodus" ist eine Garantie dafür, dass Sie den Registrar nicht "verlieren". Dies ist eine garantierte Zeit, wenn Sie es einschalten, wenn der Benutzer das Gerät konfigurieren oder den Zugangspunkt einschalten kann. Nach dem Wiederherstellungsmodus wird automatisch die Hauptmenüseite aufgerufen. Dieser Teil der Funktionalität wird noch getestet und vorübergehend deaktiviert.

AUFNAHME




Datums- und Uhrzeitanzeigefeld, Menü „Uhrzeit einstellen“, „Im lokalen Speicher aufzeichnen“ und „Im Cloud-Speicher aufzeichnen“.

Zeiteinstellung. Durch Klicken auf die Schaltfläche „Zeit ändern“ können Sie Uhrzeit und Datum ändern. Mit dem Schieberegler wird auch die Zeit für den Beginn und das Ende des Tages eingestellt (für jeden ist es individuell). Dies geschieht, um die Betriebsarten des Registrars zu verschiedenen Tageszeiten zu optimieren.
In den lokalen Speicher schreiben. Hier können Sie die Aufnahme auf externe Medien aktivieren oder deaktivieren, die Bewegungsaufzeichnung und / oder die periodische Aufnahme aktivieren oder deaktivieren, indem Sie die Länge des aufgenommenen Clips und die Aufnahmezeit der Clips einstellen (im periodischen Aufnahmemodus).
Schreiben Sie in den Cloud-Speicher. Hier wird wie im vorherigen Absatz der Datensatz im Cloud-Speicher konfiguriert. Zum Einrichten eines Cloud-Dienstes wurde ein Element hinzugefügt, in dem Sie angeben können, auf welcher Dienstwolke aufgezeichnet werden soll (derzeit funktioniert dies nur mit einer Yandex-Festplatte), den Benutzernamen und das Kennwort Ihres Yandex-Kontos.

HILFE




Der Inhalt der Menüpunkte der Benutzeroberfläche sowie der Zweck der einzelnen Elemente werden durch Punkte beschrieben.

KAMERA




RTSP-Stream-Adresse der Kamera. Die Daten für dieses Feld finden Sie auf der Seite mit den IP-Kameraeinstellungen. In Zukunft planen wir, diese Daten über ONVIF zu erhalten, und das Feld wird automatisch ausgefüllt. Während ONVIF stabiler Betrieb auf allen IP-Kameras nur träumen kann.
Die Verzögerung zwischen den Walzen. Parameter, der die Pause in Sekunden beim Aufnehmen von Filmen bestimmt. Es wird im Bewegungsaufzeichnungsmodus verwendet. Ermöglicht das Speichern von Internetverkehr bei ständiger oder häufiger Bewegung im Frame.
Video von der Kamera. Nützlich zur Steuerung des aufgenommenen Bildes bei der Installation der Kamera.

3G / 4G




Hier werden Informationen zu Ihrer Internetverbindung mit einem 3G / 4G-Modem angezeigt. Die Daten werden alle 3 Sekunden aktualisiert. Nützlich zur Überwachung der Kommunikationsqualität bei der Installation der Kamera.

LAGERUNG




Es gibt zwei Untermenüs - "Lokaler Speicher" und "Yandex.Disk". Wenn Sie das erste auswählen, gelangen wir in den Dateibaum des angeschlossenen externen Mediums. Wenn Sie das zweite auswählen, gehen wir zu Yandex.disk.

Mobile Version der Schnittstelle












Aufgezeichnete Videos können auf Yandex.Disk mit dem integrierten Player des Dienstes angezeigt werden. Das Video kann auch von jedem Videoplayer heruntergeladen und lokal angezeigt werden. Die Speicherung der aufgezeichneten Videos ist wie folgt organisiert:



CAM - Ordner zum Aufzeichnen von Videos vom Registrar;
MOTION - ein Ordner zum Aufzeichnen von Videos, die durch Bewegung im Frame aufgenommen wurden;
TIME - Ordner zum Aufnehmen von Videos, die mit einer bestimmten Frequenz aufgenommen wurden;
JJJJ-MM-TT - Ordner für tagsüber aufgenommene Videos;
TTMMJJJJ-HH_MM_SS.mp4 - im MP4-Format aufgenommene Videos;

Organisation der Dateispeicherung auf Yandex.Disk





Was ist drin? Serverseitige Implementierung


Wie ich oben schrieb, war der TP-LINK TL-MR3020-Router mit OPENWRT an Bord das erste Experiment. Barrier Breaker Version 14.07. Zu Beginn des Tests war es die neueste Version. Jetzt auf LEDE aktualisiert. OpenRTSP befand sich nicht im Repository dieser Version, daher haben wir das Dienstprogramm selbst hinzugefügt und gleichzeitig alles Überflüssige daraus entfernt.

Nach erfolgreichen Tests haben wir begonnen, andere Router mit ähnlicher Architektur in Betracht zu ziehen. Wir suchten nach einer Plattform, die sowohl in den Dimensionen als auch in den Merkmalen für den Registrar besser geeignet ist. Die Idee ist, dass Sie durch Flashen eines Routers mit geänderter Firmware und Anschließen einer IP-Kamera mit einem 3G / 4G-Modem einen Registrar erhalten. Die Liste der Geräte, auf denen die Registrar-Funktionalität getestet wurde:

  • TP-LINK TL-MR3020;
  • HAME A5;
  • CARAMBOLLA2;
  • UNWIREDONE;
  • Skywork skw71;
  • TP-LINK TL-MR10U (mit Batterie);
  • TP-LINK TL-MR3040 (mit Batterie);
  • TP-LINK TL-MR3220 V: 2,3 (4 Ethernet-Ports);

Wir haben versucht, die Karten der Router in diesem Fall zu testen. Die Idee war, dass außer dem Gehäuse nichts herausragt und nicht hängt und das Gehäuse selbst eine minimale Größe hat. Daher sollte sich das Modem, wie von 3G / 4G geplant, im Gehäuse befinden. Also haben wir einen kollektiven Farm Street Prototyp bekommen, der auf dem TP-LINK TL-MR3020 Board basiert:









Natürlich haben wir Router mit minimalen Größen bevorzugt. Aus diesem Grund haben wir uns entschlossen, den chinesischen Router HAME A5 zu testen, einen Fall dafür auszudrucken und zu sehen, was passiert:





Auf HAME A5 war unsere Registrar-Firmware instabil, der Router legte ständig auf und startete neu. Dies war höchstwahrscheinlich auf eine starke Überhitzung zurückzuführen. Daher musste ich es zugunsten einer zuverlässigeren und bewährten Option aufgeben.

Wir haben viele Optionen ausprobiert, aber nichts ist besser als meine. Aus diesem Grund haben sie beschlossen, ihr Board mit einem Modul von CARAMBOLLA2 und der Möglichkeit der Akkulaufzeit zu vertreiben.



Eigenschaften von CARAMBOLLA2:

  • Prozessor AR9331, 400 MHz;
  • 64 MB DDR2-RAM;
  • 16 MB FLASH;
  • 802,11 b / g / n, 2,4 GHz, 1x1 SISO, maximale Datenrate von 150 MBit / s, 21 dB Ausgangsleistung;
  • Versorgungsspannung 3,3 V;
  • Abmessungen 28 x 38 mm;

Bei der Gestaltung des Boards wurde deutlich, dass es ziemlich klein ausfällt:





Noch ein Foto!
















Warum nicht direkt in die Kamera einbauen? So lösen wir sofort das Problem mit dem Fall für den Registrar. Also taten sie es. Folgendes ist passiert:









Das Foto zeigt, dass die Rekorderplatine parallel zu den Kamerakarten auf den Racks montiert ist. Aus Gründen der Kühlung des Chips ist es besser, IP-Kameras mit einem Metallgehäuse zu verwenden und einen Kühler herzustellen, damit dem Gehäuse Wärme entzogen wird. Zum Anschließen eines 3G / 4G-Modems und / oder eines USB-Laufwerks wurde ein Standard-Ethernet-IP-Kamerakabel verwendet. Die Autonomie der Kamera mit dem Rekorder im Inneren bietet eine 3,7-V-Batterie mit 700 mAh. Die Batteriefunktion ist bei einem absichtlichen Stromausfall hilfreich. Dieser Akku reicht für ca. 20 Minuten DVR-Betrieb mit der Kamera.

Gib mehr Kameras!


Es wurden auch Experimente mit der Aufzeichnung von Videos von mehreren IP-Kameras durchgeführt. Die Experimente haben gezeigt, dass das Aufzeichnen von Videos von 2 IP-Kameras recht stabil funktioniert. Daher erwägen wir die Möglichkeit, einen Rekorder in einem separaten Fall mit der Möglichkeit zum Anschließen von 2 IP-Kameras zu erstellen. Jetzt testen wir die Arbeit des Registrars mit drei und vier IP-Kameras. Die Ergebnisse sind noch nicht klar. Die Kameras werden vom Rekorder über passives PoE mit Strom versorgt.



Mehr Bilder!












Die Funktionalität dieser Option kann beispielsweise bei der Installation von Kameras mit Schnittpunkt von Überwachungszonen hilfreich sein. Um mit einer großen Anzahl von Kameras zu arbeiten, können Sie in Richtung der derzeit sehr beliebten Minicomputer schauen. Sie müssen jedoch verstehen, dass der Energieverbrauch solcher Geräte um eine Größenordnung höher ist und auch der Preis.

Wie nennt man ein Boot, damit es segelt?


Sie haben wahrscheinlich die Inschrift auf der Tafel bemerkt. Wir fanden es wertlos, wenn ein Projekt ohne Titel war. Sie hatten einen bescheidenen Namen - "Vip-Cam" (Video-Ip-Kamera). Nun, die Version mit mehreren Kameras - "Vip-Box".

Was weiter?


Zukunftspläne:

  • Optimieren und testen Sie den Code. Holen Sie sich ein stabiles Arbeitsgerät;
  • Recherche über die Möglichkeit der Einrichtung einer IP-Kamera über das Webanwendungsmenü;
  • Erkundigen Sie sich nach der Möglichkeit, einen DVR in ein Smart-Home-System zu integrieren.
  • Testen Sie den Betrieb des DVR mit zwei oder mehr IP-Kameras.
  • Führen Sie Tests zum Betrieb der Kamera mit einer Solarbatterie durch.
  • Erstellen einer Änderung am DVR mit Unterstützung für 2-x-IP-Kameras;
  • Hinzufügen von Funktionen für die Fernkonfiguration des DVR und der IP-Kamera;
  • Hinzufügen der Möglichkeit, ein Video bei Bedarf aus der Ferne zu erstellen;

Quellen des Projekts sind hier .

Deshalb haben wir derzeit die Idee eines Cloud-Mini-Recorders umgesetzt. Das Projekt wird in Ihrer Freizeit umgesetzt, daher verzögert sich die Entwicklungszeit erheblich. Als Ergebnis haben wir einen funktionierenden Prototyp eines kleinen DVR, der Videos kostenlos im Cloud-Speicher aufnehmen kann. Es gibt noch viel Arbeit, aber eine der Aufgaben wurde gelöst - es ist durchaus möglich, einen qualitativ hochwertigen, beispiellosen Registrar zu erstellen. Vielen Dank für Ihre Aufmerksamkeit.

Source: https://habr.com/ru/post/de422797/


All Articles