Como simplifiquei o streaming de câmeras RTSP para Web usando NestJS e MediaMTX
Recentemente, enfrentei um desafio técnico comum, mas surpreendentemente mal documentado: integrar feeds de câmeras de segurança (RTSP) diretamente em sites e blogs de forma performática e acessível.
A maioria das soluções de mercado que encontrei pecava em três pontos:
- Opacidade: Limites de uso e custos não eram claros.
- Barreira Linguística: Suporte exclusivamente em inglês.
- Complexidade: Implementações que exigiam configurações manuais exaustivas para cada novo stream.
Dessa dor nasceu o rtsp-saas, uma plataforma para converter streams RTSP em protocolos amigáveis para a web (HLS/WebRTC) de forma automatizada.
A Stack Técnica
Para construir o MVP e escalar o processamento de vídeo, utilizei:
- Backend: NestJS (Node.js) pela robustez na construção de APIs e facilidade com microserviços.
- Banco de Dados: PostgreSQL para gerenciar usuários, permissões e metadados dos streams.
- Engine de Vídeo: MediaMTX (antigo rtsp-simple-server). Ele atua como o servidor de mídia central, recebendo os pacotes RTSP e fazendo o remuxing para HLS em tempo real.
O maior desafio: Transcoding vs. Remuxing
Um dos grandes aprendizados foi entender o equilíbrio de CPU. Enquanto o remuxing (apenas mudar o "envelope" do vídeo de RTSP para HLS) é leve, o transcoding (mudar o codec para garantir compatibilidade) consome muito recurso. No SaaS, foquei em otimizar essa conversão para que o usuário final tenha latência mínima sem precisar de um servidor de 64GB de RAM para três câmeras.
Por que um SaaS brasileiro?
Percebi que igrejas, pequenos comércios e sites de monitoramento local muitas vezes não possuem uma equipe técnica para lidar com documentações complexas em inglês ou configurar instâncias Docker do zero. O objetivo foi democratizar esse acesso com um dashboard em português e configuração em 2 cliques.
Gostaria de saber da comunidade: alguém aqui já teve que lidar com a dor de cabeça que é o protocolo RTSP no browser? Como resolveram o problema da latência?
Estou aberto a feedbacks sobre o projeto!
Link: https://rtsp-saas.com/