Passer au contenu principal

Présentation

GStreamer est un puissant framework multimédia qui permet le streaming et le traitement vidéo efficaces. L’exploreHD prend en charge plusieurs formats de compression, notamment H.264 accéléré matériellement, MJPEG et YUYV brut.

Prérequis

Vous devez avoir GStreamer installé sur un ordinateur Linux. Vous pouvez utiliser la commande d’installation suivante pour obtenir les packages requis.
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

Identifier les nœuds de périphérique

Lorsque vous branchez une caméra exploreHD, le noyau Linux (via V4L2) crée généralement quatre nœuds de périphérique (par exemple, /dev/video0 à /dev/video3).
  • MJPEG / YUYV : généralement présent sur le premier nœud du groupe (par exemple, /dev/video0).
  • H.264 matériel : généralement présent sur le troisième nœud du groupe (par exemple, /dev/video2).
Vous pouvez vérifier vos nœuds de périphérique à l’aide de v4l2-ctl :
v4l2-ctl --list-devices
Recherchez l’entrée correspondant à l’exploreHD. Elle listera les chemins associés à cette caméra spécifique.

Mode H.264 matériel

L’exploreHD intègre un encodage H.264 matériel qui offre une vidéo de haute qualité à faible débit avec une charge CPU minimale.

Aperçu local

Pour afficher le flux H.264 localement (en supposant que /dev/video2 soit le nœud H.264) :
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! avdec_h264 ! autovideosink

Flux réseau UDP

Pour diffuser le flux H.264 sur un réseau vers un autre appareil (par exemple, IP 192.168.1.50 sur le 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
Pour recevoir le flux sur un autre ordinateur, vous pouvez utiliser ceci :
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

Mode MJPEG

Le mode MJPEG est largement compatible et offre une bonne qualité avec une faible latence.

Aperçu local

En supposant que /dev/video0 soit le nœud MJPEG :
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1920,height=1080,framerate=30/1 ! \
    jpegdec ! autovideosink

Flux réseau UDP

Pour diffuser du MJPEG sur le réseau :
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

Mode YUYV

Notez qu’en raison des limitations de bande passante USB, YUYV est généralement limité à des fréquences d’images plus faibles à haute résolution.

Aperçu local

En supposant que /dev/video0 soit le nœud :
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! \
    videoconvert ! autovideosink
Consultez les spécifications techniques de l’exploreHD pour voir quelles combinaisons de résolution et de fréquence d’images sont prises en charge en mode YUYV. En 1080p, YUYV est limité à 5 FPS.

Contrôle avancé du débit

En mode H.264, vous pouvez ajuster le débit et d’autres paramètres de l’encodeur via les contrôles V4L2 pendant l’exécution du pipeline.
# Exemple : régler le débit à 5 Mbps
v4l2-ctl -d /dev/video2 --set-ctrl=video_bitrate=5000000