Saltar para o conteúdo principal
O dweOS não suporta oficialmente a transmissão com GStreamer. As etapas a seguir são apenas para Linux e Windows.OBSERVAÇÃO: a qualidade da transmissão pode ser prejudicada como resultado.
O GStreamer pode ser muito complexo/elaborado, mesmo para configurar um único fluxo de vídeo. Muitos dos recursos de conveniência, como múltiplos fluxos e gravações ao vivo, são muito mais simples e vêm com uma interface de usuário no Discovery
1

Verifique o dweOS

Após seguir a configuração do dweOS, prossiga para as próximas etapas.
Anote a(s) porta(s) para as quais está sendo feita a transmissão.
2

Instale o GStreamer

No terminal, execute:
sudo apt update
Em seguida, execute o seguinte para instalar o GStreamer:
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools                
Para verificar a configuração do GStreamer, abra o CMD e execute o seguinte:
gst-launch-1.0 --version
Isso deve resultar em uma saída como:
gst-launch-1.0 version 1.16.2
GStreamer 1.16.2
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
3

Identifique as variáveis para a linha de comando do GStreamer

Para conectar os fluxos de vídeo dos dispositivos conectados, primeiro você configurará o dweOS.
1
Primeiro identifique o endereço IP do seu laptop/desktop, que preencheremos no software dweOS.Isso pode ser feito executando o seguinte:
ip addr
Você verá vários endereços; procure entre eles, especificamente os endereços após o texto: inet.
Provavelmente estará no formato 192.168.x.xx
2
Você deverá substituir o IP coletado no dweOS em IP address e anotar a porta para a qual está transmitindo. (Padrão 5600)
Lembre-se de criar o endpoint de streaming com o botão (+) após preencher os campos!
Neste exemplo o IP coletado é 192.168.5.55, e a porta é 5600Endpoints dweOS
O campo Port sendo definido como 5601 é automático com o programa; os únicos endpoints em transmissão têm o ícone da câmera ao lado e um botão de lixeira para excluí-los.
3
O formato do GStreamer é o seguinte:
gst-launch-1.0 [FLAGS] [SOURCE] ! [FILTER] ! [SINK]
Com a porta em mente, existem alguns parâmetros do comando GStreamer para se ter atenção.Flags essenciais:
  • -v (Verbose): imprime informações do fluxo para que você possa ver qual resolução/formato está sendo negociado entre os elementos.
  • -e (EOS - End of Stream): crucial para gravação. Se você pressionar Ctrl+C sem essa flag, seu arquivo pode ficar corrompido (cabeçalhos ausentes). Essa flag força um encerramento limpo.
  • --help-all: lista todos os elementos disponíveis no seu sistema.
Sources (entrada):
  • videotestsrc: gera um padrão de teste (barras de cores, estática, etc.).
  • Param: pattern=smpte (ou snow, ball, etc.)
  • autovideosrc / v4l2src: sua webcam (Linux).
  • Param: device=/dev/video0
  • filesrc: lê um arquivo local.
  • Param: location=./video.mp4
  • udpsrc: recebe dados pela rede via UDP.
    • Param: port=5600 (a porta para escutar).
    • Param: caps="..." (essencial! Informa ao GStreamer o que são os bytes brutos).
    • Param: buffer-size=524288 (aumenta o buffer para evitar perda de pacotes em fluxos de alta resolução).
      • Tamanhos de buffer padrão para H264 é 96 e MJPEG é 26
Sinks (saída)
  • autovideosink: abre uma janela e reproduz o vídeo.
  • fakesink: descarta dados (útil para testar se um pipeline é executado sem erros).
  • filesink: grava em um arquivo.
  • Param: location=output.mp4
  • udpsink: transmite pela rede.
Essenciais (Filtros/Conversores)
  • videoconvert: converte espaços de cores (por exemplo, de YUV para RGB). Se receber um erro “could not link”, coloque isso no meio.
  • videoscale: redimensiona o vídeo.
  • capsfilter: força um formato específico. Sintaxe: video/x-raw,width=1920,height=1080.
  • rtp[format]depay: Depayloader. Desembrulha os pacotes RTP da rede para revelar o fluxo dentro deles.
    • Exemplos: rtpjpegdepay (para MJPEG), rtph264depay (para H.264).
  • [format]dec: Decodificador. Descomprime o vídeo em pixels brutos para exibição.
    • Exemplos: jpegdec, avdec_h264.
4
Aqui estão algumas linhas de exemplo para testar seu GStreamer:Padrão de teste
gst-launch-1.0 -v videotestsrc ! videoconvert ! autovideosink
Exibição de webcam (se disponível)
gst-launch-1.0 -v v4l2src ! videoconvert ! autovideosink
Forçar webcam para 720p 30fps
gst-launch-1.0 -v v4l2src ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! videoconvert ! autovideosink
Para resoluções mais altas, a saída de vídeo geralmente é MJPEG comprimido.image/jpeg aceita o formato comprimido da câmera.jpegdec adiciona um decodificador para transformar esse fluxo JPEG de volta em vídeo bruto para que a janela possa exibi-lo.
Gravar webcam
gst-launch-1.0 -e v4l2src ! videoconvert ! x264enc ! mp4mux ! filesink location=test.mp4
Isso gravará em segundo plano; para finalizar o clipe, pressione Ctrl + C, e ele estará no diretório atual.Neste caso o arquivo se chama test.mp4, o qual podemos verificar com ls -lh test.mp4
4

Configurando o streaming a partir do dweOS

Com um entendimento dos comandos do GStreamer, podemos começar a configurar o fluxo de vídeo especificamente com o dweOS.
Lembre-se de definir seu próprio IP como IP no endpoint de streaming!
Dependendo do codec de vídeo (MJPEG / H264) especificado no dweOS, execute um dos seguintes comandos:MJPEG
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegdec ! autovideosink
H264
gst-launch-1.0 udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! avdec_h264 ! autovideosink
Lembre-se de substituir o número da porta na linha de comando pela porta para a qual está sendo feita a transmissão!
Você agora deve ter uma transmissão ao vivo da sua câmera em uma janela!
5

Configurando a gravação

Para gravar um fluxo, mais uma vez o codec de vídeo importa!Você saberá que um fluxo está sendo gravado quando seu terminal contiver texto semelhante a este:Gravação com GStreamerMJPEGPara MKV
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=JPEG, payload=26" ! rtpjpegdepay ! jpegparse ! matroskamux ! filesink location=output_mjpeg.mkv
A linha acima é para o formato MKV, pois AVI é incrivelmente sensível com GStreamer e requer que os dados de saída sejam formatados de forma muito específica. Embora possível, MJPEG para AVI é muito mais simples no Discovery, pois é a saída padrão.
H264Para MKV
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! matroskamux ! filesink location=output_h264.mkv
Para MP4
gst-launch-1.0 -e udpsrc port=5600 caps="application/x-rtp, encoding-name=H264, payload=96" ! rtph264depay ! h264parse ! video/x-h264,stream-format=avc ! mp4mux ! filesink location=video.mp4
6

Sucesso!

Maravilhoso! Você agora deve ter as bases para configurar uma transmissão e gravação com GStreamer!
Aviso:Com o GStreamer, configurar uma única câmera já exige bastante trabalho, e gravar vários fluxos de uma vez também exigiria bastante trabalho e desenvolvimento.Recomendamos o Discovery caso suas configurações de câmera se tornem complexas.

Baixar o Discovery

A solução multimídia tudo-em-um para fluxos de vídeo de rede submarina.