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
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.
Vamos construir o nosso próprio pipeline de transmissão de vídeo ao vivo: Uma conversa sobre FFmpeg e MediaMTX
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
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:
Na Parte 2, vou explicar como adicionar segurança, ligar câmaras IP reais e preparar para produção.