Projekt
QT-Anwendung zum Streamen von Videos
QT-basierte Video-Stream- und Daten-Overlay-Anzeige
CPU
ARM Cortex
Hersteller
Broadcom
OS
Linux
Kompetenzen
Linux
QT
GStreamer
MQTT
Projektgröße:
Schwierigkeit:
Anfrage/Problem:
Kundenwunsch war die Firmware Implementierung für ein auf Raspberry Pi 3 Model B+ (Raspi3) basierendes Gerät.
Das Gerät soll als Streaming-Punkt verwendet werden, an dem ein Netzwerk-Videostream auf einem entfernten HDMI-Display angezeigt werden soll. Außerdem soll es ein Daten-Overlay erstellen, das über dem HDMI-Videoausgang angezeigt werden soll.
Das Video von der Kamera wird über Multicast-UDP-Pakete gestreamt.
Die Position, Daten, Schriftfarbe, Ausrichtung und einige andere Parameter für jedes Daten-Overlay werden über MQTT empfangen.
Gerät, MQTT-Broker und Kamera laufen im selben Netzwerk. Standardmäßig arbeitet der Ethernet-Adapter des Raspberry Pi im DHCP-Modus. Wenn kein DHCP-Server im Netzwerk verfügbar ist, wird der Ethernet-Schnittstelle eine statische Adresse zugewiesen.
Lösungsansatz:
Wir haben rootfs vorbereitet, das die neueste Linux-Kernel-Version 5.4 (LTS), QT 5.12.10 und GStreamer 1.18 enthält.
QT und GStreamer sind aus dem Quellcode gebaut und in das Image integriert. Es wird die Standard-Toolchain von Raspbian verwendet.
Die QT-Applikation läuft als Dienst und wird beim Systemstart gestartet.
Die Anwendung beinhaltet auch eine MQTT-Bibliothek (QMQTT), diese ist in der Lage, die Nachrichten zu abonnieren und den Inhalt auf dem Bildschirm anzuzeigen.
Der Videostream wird von der Anwendung mithilfe des QMediaPlayers angezeigt.
Dem Image wird ein spezielles Skript hinzugefügt, das beim Hochfahren des Systems ausgeführt wird und prüft, ob eine IP-Adresse per DHCP zugewiesen ist. Wenn eine solche nicht zugewiesen ist, wird eine statische IP-Adresse an den Ethernet-Adapter vergeben.
Architektur:
Ergebnisse:
Die Firmware wurde implementiert und von BE.services mit dem endgültigen System im Feld getestet. Die Leistung des Videostreamings ist geeignet und Daten-Overlays werden korrekt auf dem Bildschirm angezeigt.