Saltar para o conteúdo principal

Visão geral

O GStreamer é um poderoso framework multimídia que permite transmissão e processamento de vídeo de forma eficiente. A exploreHD suporta múltiplos formatos de compressão, incluindo H.264 acelerado por hardware, MJPEG e YUYV bruto.

Requisitos

Você deve ter o GStreamer instalado em um computador Linux para isso. Você pode usar o comando de instalação a seguir para obter os pacotes necessários.
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

Identificando os nós de dispositivo

Quando você conecta uma câmera exploreHD, o kernel do Linux (via V4L2) normalmente cria quatro nós de dispositivo (por exemplo, /dev/video0 a /dev/video3).
  • MJPEG / YUYV: Normalmente encontrado no primeiro nó do grupo (por exemplo, /dev/video0).
  • H.264 em hardware: Normalmente encontrado no terceiro nó do grupo (por exemplo, /dev/video2).
Você pode verificar seus nós de dispositivo usando v4l2-ctl:
v4l2-ctl --list-devices
Procure a entrada correspondente à exploreHD. Ela listará os caminhos associados àquela câmera específica.

Modo H.264 em hardware

A exploreHD conta com codificação H.264 em hardware integrada, que oferece vídeo de alta qualidade com bitrates baixos e sobrecarga mínima de CPU.

Pré-visualização local

Para visualizar o stream H.264 localmente (assumindo que /dev/video2 é o nó H.264):
gst-launch-1.0 v4l2src device=/dev/video2 ! \
    video/x-h264,width=1920,height=1080,framerate=30/1 ! \
    h264parse ! avdec_h264 ! autovideosink

Stream de rede UDP

Para transmitir o feed H.264 pela rede para outro dispositivo (por exemplo, IP 192.168.1.50 na porta 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 receber o stream em outro computador você pode usar o seguinte:
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

O modo MJPEG é amplamente compatível e oferece boa qualidade com baixa latência.

Pré-visualização local

Assumindo que /dev/video0 é o nó MJPEG:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    image/jpeg,width=1920,height=1080,framerate=30/1 ! \
    jpegdec ! autovideosink

Stream de rede UDP

Para transmitir MJPEG pela rede:
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

Observe que, devido às limitações de largura de banda do USB, o YUYV normalmente fica limitado a taxas de quadros menores em altas resoluções.

Pré-visualização local

Assumindo que /dev/video0 é o nó:
gst-launch-1.0 v4l2src device=/dev/video0 ! \
    video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! \
    videoconvert ! autovideosink
Consulte as especificações técnicas do exploreHD para ver quais combinações de resolução e taxa de quadros são suportadas no modo YUYV. Em 1080p, o YUYV é limitado a 5 FPS.

Controle avançado de bitrate

Ao usar o modo H.264, você pode ajustar o bitrate e outros parâmetros do codificador via controles V4L2 enquanto o pipeline está em execução.
# Exemplo: definir o bitrate para 5 Mbps
v4l2-ctl -d /dev/video2 --set-ctrl=video_bitrate=5000000