Saltar al contenido principal

Descripción general

GStreamer es un potente framework multimedia que permite el streaming y procesamiento de video eficientes. La exploreHD admite múltiples formatos de compresión, incluidos H.264 acelerado por hardware, MJPEG y YUYV en bruto.

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 exploreHD, el kernel de Linux (a través de V4L2) normalmente crea cuatro nodos de dispositivo (por ejemplo, /dev/video0 a /dev/video3).
  • MJPEG / YUYV: generalmente se encuentra en el primer nodo del grupo (por ejemplo, /dev/video0).
  • H.264 por hardware: generalmente se encuentra en el tercer nodo del grupo (por ejemplo, /dev/video2).
Puedes verificar los nodos de dispositivo con v4l2-ctl:
v4l2-ctl --list-devices
Busca la entrada correspondiente a la exploreHD. Enumerará las rutas asociadas a esa cámara específica.

Modo H.264 por hardware

La exploreHD incorpora codificación H.264 por hardware, que ofrece video de alta calidad a bajas tasas de bits con una carga mínima de CPU.

Vista previa local

Para ver el flujo H.264 localmente (suponiendo que /dev/video2 sea el nodo H.264):
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! avdec_h264 ! autovideosink

Flujo de red UDP

Para transmitir el flujo H.264 por la red a otro dispositivo (por ejemplo, IP 192.168.1.50 en el puerto 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
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)H264, payload=(int)96" ! \
    rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

Modo MJPEG

El modo MJPEG es ampliamente compatible y ofrece buena calidad con baja latencia.

Vista previa local

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

Flujo de red UDP

Para transmitir MJPEG por la red:
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

Modo YUYV

Ten en cuenta que, debido a las limitaciones de ancho de banda USB, YUYV suele estar limitado a frecuencias de imagen más bajas en altas resoluciones.

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=30/1 ! \
    videoconvert ! autovideosink
Consulta las especificaciones técnicas de exploreHD para ver qué combinaciones de resolución y frecuencia de imagen son compatibles en modo YUYV. En 1080p, YUYV está limitado a 5 FPS.

Control avanzado de la tasa de bits

En modo H.264, puedes ajustar la tasa de bits y otros parámetros del codificador mediante los controles V4L2 mientras el pipeline se está ejecutando.
# Ejemplo: establecer la tasa de bits en 5 Mbps
v4l2-ctl -d /dev/video2 --set-ctrl=video_bitrate=5000000