Hallo! Zunächst entwickle ich ein Programm zur Ermittlung der Fahrzeugnummern auf einem billigen Prozessor mit geringem Stromverbrauch wie Intel ATOM Z8350. Wir haben ziemlich gute Ergebnisse bei der Bestimmung russischer Zahlen in einem statischen Bild (bis zu 97%) mit guter Leistung ohne Verwendung neuronaler Netze erzielt. Das einzige, was noch übrig ist, ist klein - arbeiten Sie mit der IP-Kamera Abb. 1.
Abbildung 1 Intel ATOM Z83II Computer und ATIS IP-KameraFFmpeg ist eine Bibliothek zum Erstellen von Videoanwendungen oder sogar Allzweckdienstprogrammen, die die harte Arbeit der Videoverarbeitung übernimmt und das gesamte Decodieren, Codieren, Multiplexen und Demultiplexen für Sie erledigt.
Aufgabe : Die Full HD IP-Kamera im Standard h.264 überträgt den RTSP-Stream. Die dekomprimierte Bildgröße beträgt 1920 x 1080 Pixel, die Frequenz 25 Bilder pro Sekunde. Es ist notwendig, decodierte Frames im RAM zu empfangen und alle 25 Frames auf der Festplatte zu speichern.
In diesem Beispiel werden Frames programmgesteuert dekodiert. Ziel ist es, den Umgang mit FFmpeg zu lernen und die mit der Hardware-Decodierung erzielten Ergebnisse weiter zu vergleichen. Sie werden FFmpeg sehen - es ist einfach!
FFmpeg installieren : Viele Leute schlagen vor, FFmpeg für ihre Hardware zu erstellen. Ich schlage vor,
Zeranoe-Builds zu verwenden , was die Aufgabe erheblich vereinfacht. Es ist sehr wichtig, dass
Zeranoe- Baugruppen DXVA2 unterstützen, was uns später für die Hardware-Dekodierung nützlich sein wird.
Wir besuchen die Website
https://ffmpeg.zeranoe.com/builds/ und laden 2 freigegebene und Entwicklerarchive herunter, bevor wir 32 oder 64 Bit auswählen. Das Entwicklungsarchiv speichert Bibliotheken (.lib) und enthält. Das freigegebene Archiv enthält die erforderlichen DLLs, die in einem Ordner mit Ihrem zukünftigen Programm neu geschrieben werden müssen.
Erstellen Sie also den Ordner ffmpeg auf dem Laufwerk C: \. Wir werden die Dateien aus dem Entwicklerarchiv neu schreiben.
Verbinden von FFmpeg mit Visual Studio 2017: Erstellen eines neuen Projekts. Gehen Sie zu den Projekteigenschaften (Projekteigenschaften). Als nächstes C / C ++ und wählen Sie "Zusätzliche Verzeichnisse für eingeschlossene Dateien". Stellen Sie den Wert ein: "C: \ ffmpeg \ dev \ include;". Wechseln Sie danach zu den Linker-Additional Library Directories und setzen Sie den Wert auf "C: \ ffmpeg \ dev \ lib;". Das ist alles. FFmpeg ist mit unserem Projekt verbunden.
Das erste Projekt mit FFmpeg: Software-Videodecodierung und Aufzeichnung von jeweils 25 Bildern auf Festplatte. Das Prinzip der Arbeit mit einer Videodatei in FFmpeg ist im Blockschaltbild von Abb. 2 dargestellt
Abb. 2 Blockdiagramm der Arbeit mit einer Videodatei.Hier ist der C ++ - Projektcode Weil Meine IP-Kamera hat IP 192.168.1.168, dann der Programmaufruf:
decode.exe rtsp://192.168.1.168
Dieses Beispiel kann auch Videodateien dekodieren. Es reicht aus, den Speicherort anzugeben.
In diesem Beispiel haben wir gelernt, Videodateien programmgesteuert zu dekodieren und die empfangenen Frames auf der Festplatte zu speichern. Frames werden im PPM-Format gespeichert. Sie können IrfanView 64 oder GIMP unter Windows verwenden, um diese Dateien zu öffnen.
Schlussfolgerung: Die Software-Decodierung des RTSP Full HD H.264-Streams erfordert bis zu zwei Intel ATOM Z8350-Kerne. Außerdem tritt regelmäßig ein Paketverlust auf, aufgrund dessen einige Frames falsch decodiert werden. Diese Methode eignet sich besser zum Dekodieren aufgezeichneter Videodateien, da kein Echtzeitbetrieb erforderlich ist.
Im nächsten Artikel werde ich Ihnen erklären, wie Sie den RTSP-Stream in Hardware dekodieren.Archivieren Sie mit dem Projekt
ArbeitsprogrammLinks zu Materialien auf FFmpeg:
1. Das
Tutorial zur Arbeit mit FFmpeg, etwas veraltet.2.
Verschiedene nützliche Informationen zu FFmpeg.3.
Informationen zur Verwendung der verschiedenen von FFmpeg bereitgestellten Bibliotheken.