Saltar al contenido principal

Descripción general

GStreamer es un potente framework multimedia que permite el streaming y procesamiento de video eficientes. La stellarHD admite los formatos de compresión MJPEG y YUYV en bruto, con soporte de alta frecuencia de imagen de hasta 60 FPS.

Requisitos

Debes tener GStreamer instalado en una computadora con Linux. Puedes usar el siguiente comando de instalación para obtener los paquetes necesarios.
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

Identificación de los nodos del dispositivo

Cuando conectas una cámara stellarHD, el kernel de Linux (a través de V4L2) normalmente crea cuatro nodos de dispositivo (por ejemplo, /dev/video0 a /dev/video3).
  • MJPEG / YUYV: se encuentra en el primer nodo del grupo (por ejemplo, /dev/video0).
Puedes verificar los nodos de dispositivo con v4l2-ctl:
v4l2-ctl --list-devices
Busca la entrada correspondiente a la stellarHD. Enumerará las rutas asociadas a esa cámara específica.

Modo MJPEG

El modo MJPEG es la forma principal de lograr frecuencias de imagen altas (hasta 60 FPS) en la stellarHD.

Vista previa local

Suponiendo que /dev/video0 sea el nodo MJPEG:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1600,height=1200,framerate=60/1 ! \
    jpegdec ! autovideosink

Flujo de red UDP

Para transmitir MJPEG por la red a otro dispositivo (por ejemplo, IP 192.168.1.50 en el puerto 5600):
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1600,height=1200,framerate=60/1 ! \
    rtpjpegpay ! udpsink host=192.168.1.50 port=5600
Para recibir el flujo en otra computadora puedes usar lo siguiente:
gst-launch-1.0 -v udpsrc port=5600 ! \
    "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)26" ! \
    rtpjpegdepay ! jpegdec ! videoconvert ! autovideosink

Modo YUYV

Ten en cuenta que YUYV está limitado a frecuencias de imagen más bajas en resoluciones altas debido al ancho de banda USB.

Vista previa local

Suponiendo que /dev/video0 sea el nodo:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    video/x-raw,format=YUY2,width=640,height=480,framerate=5/1 ! \
    videoconvert ! autovideosink
Consulta las especificaciones técnicas de stellarHD para ver qué combinaciones de resolución y frecuencia de imagen son compatibles en modo YUYV.

Codificación por software (H.264)

Como la stellarHD no cuenta con un codificador H.264 por hardware integrado, puedes usar GStreamer para realizar codificación por software si necesitas transmitir H.264 por la red.
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1280,height=720,framerate=60/1 ! \
    jpegdec ! queue ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! \
    h264parse ! rtph264pay config-interval=10 pt=96 ! \
    udpsink host=192.168.1.50 port=5600