Vamos construir o nosso próprio pipeline de transmissão de vídeo ao vivo: Uma conversa sobre FFmpeg e MediaMTX

robot
Geração do resumo em andamento

Já alguma vez pensaste em ver imagens em direto de câmaras de segurança ou dispositivos IoT no teu navegador web? Parece simples, mas quando tentas mesmo fazer isso, torna-se bastante complicado.

Qual é o problema

As câmaras IP transmitem por RTSP (Real Time Streaming Protocol), mas o navegador não suporta RTSP. Desde a década de 2010, por razões de segurança, os navegadores removeram o suporte a RTSP. Ou seja, a câmara e o navegador “falam línguas diferentes”.

Existem duas ferramentas incríveis que resolvem este problema:

FFmpeg — O deus do processamento de vídeo. É uma ferramenta universal usada até nas pipelines de encoding do VLC e da Netflix.

MediaMTX — Servidor de streaming leve. Faz conversão de RTSP para WebRTC, entre outras coisas.

O que tens de fazer são 3 passos

1. Fazer streaming de um ficheiro de vídeo

Cria o ficheiro de configuração do MediaMTX (mediamtx.yml): yaml paths: test_video: source: publisher

Distribui o ficheiro por RTSP: bash ffmpeg -re -i your_video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video

Podes verificar no VLC.

2. Transmitir a webcam em tempo real

Adiciona à configuração do MediaMTX: yaml paths: webcam: source: publisher

Windows: bash ffmpeg -f dshow -rtbufsize 100M -i video=“Integrated Webcam” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

Mac: bash ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i “0” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

Linux: bash ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f rtsp rtsp://localhost:8554/webcam

3. Ver no navegador (magia WebRTC)

Aqui é que fica interessante. Ativa o suporte WebRTC no MediaMTX:

yaml webrtc: yes webrtcAddress: :8889 webrtcEncryption: no webrtcAllowOrigin: ‘*’ webrtcLocalUDPAddress: :8189 webrtcIPsFromInterfaces: yes

paths: test_video: source: publisher webcam: source: publisher

Abre http://localhost:8889/ no navegador e o RTSP é convertido automaticamente para WebRTC e visualizado no browser. É só isto.

Fluxo de dados

  1. Câmara → frames brutos
  2. FFmpeg → encoding H.264 → distribuição RTSP
  3. MediaMTX → recebe RTSP
  4. Navegador → pede WebRTC
  5. MediaMTX → conversão automática → transmissão WebRTC
  6. Navegador → reprodução em tempo real

A conversão é feita sem re-encoding, por isso é eficiente. As grandes infraestruturas da Netflix funcionam com o mesmo princípio.

Próximos passos?

Esta configuração é nível demo. Para produção ainda faltam coisas:

  • Não há autenticação
  • Só funciona no localhost
  • Não suporta câmaras IP reais
  • Falta gestão de erros

Na Parte 2, vou explicar como adicionar segurança, ligar câmaras IP reais e preparar para produção.

Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Repostar
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar
Negocie criptomoedas a qualquer hora e em qualquer lugar
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)