Zum Hauptinhalt springen

Übersicht

GStreamer ist ein leistungsfähiges Multimedia-Framework, das effizientes Video-Streaming und -Processing ermöglicht. Die exploreHD unterstützt mehrere Kompressionsformate, darunter hardwarebeschleunigtes H.264, MJPEG und rohes YUYV.

Voraussetzungen

Sie müssen GStreamer auf einem Linux-Computer installiert haben. Sie können den folgenden Installationsbefehl verwenden, um die erforderlichen Pakete zu erhalten.
sudo apt install v4l-utils libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-plugins-ugly

Geräteknoten identifizieren

Wenn Sie eine exploreHD-Kamera anschließen, erstellt der Linux-Kernel (über V4L2) in der Regel vier Geräteknoten (z. B. /dev/video0 bis /dev/video3).
  • MJPEG / YUYV: In der Regel auf dem ersten Knoten der Gruppe zu finden (z. B. /dev/video0).
  • Hardware-H.264: In der Regel auf dem dritten Knoten der Gruppe zu finden (z. B. /dev/video2).
Sie können Ihre Geräteknoten mit v4l2-ctl überprüfen:
v4l2-ctl --list-devices
Suchen Sie nach dem Eintrag, der der exploreHD entspricht. Dort werden die mit dieser bestimmten Kamera verknüpften Pfade aufgelistet.

Hardware-H.264-Modus

Die exploreHD verfügt über eine integrierte Hardware-H.264-Kodierung, die hochwertige Videos bei niedrigen Bitraten mit minimaler CPU-Last liefert.

Lokale Vorschau

Um den H.264-Stream lokal anzuzeigen (unter der Annahme, dass /dev/video2 der H.264-Knoten ist):
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! avdec_h264 ! autovideosink

UDP-Netzwerkstream

Um den H.264-Feed über ein Netzwerk an ein anderes Gerät zu streamen (z. B. IP 192.168.1.50 auf Port 5600):
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! queue ! rtph264pay config-interval=10 pt=96 ! \
    udpsink host=192.168.1.50 port=5600
Um den Stream auf einem anderen Computer zu empfangen, können Sie Folgendes verwenden:
gst-launch-1.0 -v udpsrc port=5600 ! \
    "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! \
    rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

MJPEG-Modus

Der MJPEG-Modus ist weitgehend kompatibel und bietet eine gute Qualität bei geringer Latenz.

Lokale Vorschau

Unter der Annahme, dass /dev/video0 der MJPEG-Knoten ist:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1920,height=1080,framerate=30/1 ! \
    jpegdec ! autovideosink

UDP-Netzwerkstream

Um MJPEG über das Netzwerk zu streamen:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1920,height=1080,framerate=30/1 ! \
    rtpjpegpay ! udpsink host=192.168.1.50 port=5600

YUYV-Modus

Beachten Sie, dass YUYV aufgrund der Bandbreitenbeschränkungen von USB bei hohen Auflösungen in der Regel auf niedrigere Bildraten begrenzt ist.

Lokale Vorschau

Unter der Annahme, dass /dev/video0 der Knoten ist:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! \
    videoconvert ! autovideosink
Sehen Sie in den technischen Spezifikationen der exploreHD nach, welche Kombinationen aus Auflösung und Bildrate im YUYV-Modus unterstützt werden. Bei 1080p ist YUYV auf 5 FPS begrenzt.

Erweiterte Bitratensteuerung

Im H.264-Modus können Sie die Bitrate und andere Encoder-Parameter über V4L2-Steuerelemente anpassen, während die Pipeline läuft.
# Beispiel: Bitrate auf 5 Mbit/s setzen
v4l2-ctl -d /dev/video2 --set-ctrl=video_bitrate=5000000