Zum Hauptinhalt springen
dweOS unterstützt das Streaming mit GStreamer nicht offiziell. Die folgenden Schritte gelten nur für Linux und Windows.HINWEIS: Die Streamqualität kann darunter leiden.
GStreamer kann sehr komplex/aufwendig sein, selbst um einen einzelnen Videostream einzurichten. Viele Komfortfunktionen wie mehrere Streams und Live-Aufnahmen sind in Discovery viel einfacher und werden mit einer Benutzeroberfläche geliefert.
1

dweOS prüfen

Nachdem Sie die dweOS-Einrichtung durchgeführt haben, fahren Sie mit den nächsten Schritten fort.
Notieren Sie sich den bzw. die Ports, an die gestreamt wird.
2

GStreamer installieren

Führen Sie im Terminal aus:
sudo apt update
Führen Sie dann Folgendes aus, um GStreamer zu installieren:
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools                
Um die GStreamer-Einrichtung zu überprüfen, öffnen Sie CMD und führen Sie Folgendes aus:
gst-launch-1.0 --version
Dies sollte zu einer Ausgabe wie dieser führen:
gst-launch-1.0 version 1.16.2
GStreamer 1.16.2
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
3

Variablen für die GStreamer-Kommandozeile ermitteln

Um die Videostreams verbundener Geräte zu verknüpfen, konfigurieren Sie zunächst dweOS.
1
Ermitteln Sie zunächst die IP-Adresse Ihres Laptops/Desktops, die wir in die dweOS-Software eintragen werden.Dies können Sie tun, indem Sie Folgendes ausführen:
ip addr
Es werden Ihnen viele Adressen angezeigt. Suchen Sie darin gezielt nach Adressen nach dem Text: inet.
Sie hat höchstwahrscheinlich das Format 192.168.x.xx.
2
Ersetzen Sie in dweOS unter „IP address” die ermittelte IP und notieren Sie sich den Port, an den gestreamt wird (Standard: 5600).
Denken Sie daran, den Streaming-Endpunkt mit der Schaltfläche (+) zu erstellen, sobald die Felder ausgefüllt sind!
In diesem Beispiel ist die ermittelte IP 192.168.5.55 und der Port ist 5600.dweOS Endpoints
Das Feld „Port” wird automatisch vom Programm auf 5601 gesetzt; die einzigen Endpunkte, an die tatsächlich gestreamt wird, haben das Kamerasymbol daneben und eine Papierkorb-Schaltfläche zum Löschen.
3
Das Format von GStreamer sieht wie folgt aus:
gst-launch-1.0 [FLAGS] [SOURCE] ! [FILTER] ! [SINK]
Mit Blick auf den Port gibt es einige Parameter für den GStreamer-Befehl, die man kennen sollte.Wichtige Flags:
  • -v (Verbose): Gibt Stream-Informationen aus, damit Sie sehen, welche Auflösung/Format zwischen den Elementen ausgehandelt wird.
  • -e (EOS – End of Stream): Entscheidend für Aufnahmen. Wenn Sie ohne dieses Flag Strg+C drücken, könnte Ihre Datei beschädigt sein (fehlende Header). Dieses Flag erzwingt ein sauberes Herunterfahren.
  • --help-all: Listet jedes auf Ihrem System verfügbare Element auf.
Quellen (Input):
  • videotestsrc: Erzeugt ein Testbild (Farbbalken, Rauschen usw.).
  • Parameter: pattern=smpte (oder snow, ball usw.)
  • autovideosrc / v4l2src: Ihre Webcam (Linux).
  • Parameter: device=/dev/video0
  • filesrc: Liest eine lokale Datei.
  • Parameter: location=./video.mp4
  • udpsrc: Empfängt Daten über das Netzwerk via UDP.
    • Parameter: port=5600 (Der Port, auf dem gehorcht wird).
    • Parameter: caps="..." (Unerlässlich! Teilt GStreamer mit, worum es sich bei den Rohbytes tatsächlich handelt).
    • Parameter: buffer-size=524288 (Erhöht den Puffer, um Paketverlust bei hochauflösenden Streams zu verhindern).
      • Standard-Puffergrößen sind für H264 96 und für MJPEG 26.
Senken (Output)
  • autovideosink: Öffnet ein Fenster und spielt das Video ab.
  • fakesink: Verwirft Daten (nützlich, um zu testen, ob eine Pipeline ohne Fehler läuft).
  • filesink: Schreibt in eine Datei.
  • Parameter: location=output.mp4
  • udpsink: Streamt über das Netzwerk.
Grundlagen (Filter/Konverter)
  • videoconvert: Konvertiert Farbräume (z. B. von YUV zu RGB). Wenn Sie einen „could not link”-Fehler erhalten, fügen Sie dies in die Mitte ein.
  • videoscale: Skaliert das Video.
  • capsfilter: Erzwingt ein bestimmtes Format. Syntax: video/x-raw,width=1920,height=1080.
  • rtp[format]depay: Depayloader. Entpackt RTP-Netzwerkpakete, um den enthaltenen Stream freizulegen.
    • Beispiele: rtpjpegdepay (für MJPEG), rtph264depay (für H.264).
  • [format]dec: Decoder. Dekomprimiert Video in Rohpixel zur Anzeige.
    • Beispiele: jpegdec, avdec_h264.
4
Hier sind einige Beispielzeilen, um Ihr GStreamer zu testen:Testbild
gst-launch-1.0 -v videotestsrc ! videoconvert ! autovideosink
Webcam-Anzeige (falls verfügbar)
gst-launch-1.0 -v v4l2src ! videoconvert ! autovideosink
Webcam auf 720p 30fps erzwingen
gst-launch-1.0 -v v4l2src ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! videoconvert ! autovideosink
Bei höheren Auflösungen ist die Videoausgabe in der Regel komprimiertes MJPEG.image/jpeg nimmt das komprimierte Format von der Kamera an.jpegdec fügt einen Decoder hinzu, um diesen JPEG-Stream wieder in Rohvideo umzuwandeln, sodass das Fenster ihn anzeigen kann.
Webcam aufnehmen
gst-launch-1.0 -e v4l2src ! videoconvert ! x264enc ! mp4mux ! filesink location=test.mp4
Dies zeichnet im Hintergrund auf. Um den Clip zu beenden, drücken Sie Strg + C, und die Datei liegt danach im aktuellen Verzeichnis.In diesem Fall heißt die Datei test.mp4, deren Existenz Sie mit ls -lh test.mp4 überprüfen können.
4

Streaming aus dweOS einrichten

Mit einem Verständnis der GStreamer-Befehle können wir mit der Einrichtung des Videostreams speziell für dweOS beginnen.
Denken Sie daran, Ihre eigene IP als IP im Streaming-Endpunkt festzulegen!
Je nach dem in dweOS angegebenen Video-Codec (MJPEG / H264) führen Sie eines der folgenden Kommandos aus:MJPEG
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegdec ! autovideosink
H264
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! avdec_h264 ! autovideosink
Denken Sie daran, die Portnummer in der Kommandozeile durch den Port zu ersetzen, an den gestreamt wird!
Sie sollten nun einen Live-Stream Ihrer Kamera in einem Fenster sehen!
5

Aufnahme einrichten

Um einen Stream aufzunehmen, ist erneut der Video-Codec entscheidend!Sie erkennen, dass ein Stream aufgenommen wird, wenn Ihr Terminal einen Text ähnlich diesem enthält:GStreamer RecordingMJPEGFür MKV
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegparse ! matroskamux ! filesink location=output_mjpeg.mkv
Die obige Zeile ist für ein MKV-Format, da AVI mit GStreamer äußerst heikel ist und die Ausgabedaten sehr spezifisch formatiert sein müssen. Zwar möglich, aber MJPEG zu AVI ist in Discovery viel einfacher, da es die Standardausgabe ist.
H264Für MKV
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! matroskamux ! filesink location=output_h264.mkv
Für MP4
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! video/x-h264,stream-format=avc ! mp4mux ! filesink location=video.mp4
6

Erfolgreich!

Wunderbar! Sie sollten nun die Bausteine haben, um einen Stream und eine Aufnahme mit GStreamer einzurichten!
Warnung:Mit GStreamer erfordert bereits eine einzige Kamera-Einrichtung einigen Aufwand, und das Aufzeichnen mehrerer Streams gleichzeitig erfordert ebenfalls erheblichen Aufwand und Entwicklungsaufwand.Wir empfehlen Discovery, sollten Ihre Kamerakonfigurationen komplex werden.

Discovery herunterladen

Die All-in-One-Multimedia-Lösung für Unterwasser-Netzwerk-Videostreams.