Este guia detalha o processo de configuração de um ambiente de transmissão de vídeo local no Windows, utilizando FFmpeg para codificar e enviar um fluxo de vídeo e Nginx com o módulo RTMP para servir esse conteúdo para uma página web local. O objetivo é permitir a reprodução de um vídeo armazenado localmente em um navegador via protocolo HTTP-FLV.
Configuração do Nginx para RTMP e HTTP-FLV
Para iniciar, é necessário um servidor Nginx compilado com o módulo RTMP. Recomenda-se baixar uma versão pré-compilada que inclua este módulo (por exemplo, nginx-rtmp-module). Após o download, descompacte o arquivo em um diretório de sua escolha, como D:\nginx. A estrutura de diretórios e a localização são cruciais para evitar problemas de caminho.
Abra o arquivo de configuração principal do Nginx, localizado em conf/nginx.conf, e adicione as seguintes seções ou verifique se elas estão presentes e configuradas corretamente. Estas linhas definem os blocos para o serviço RTMP e o servidor HTTP para servir o stream FLV.
rtmp {
server {
listen 1935; # Porta RTMP padrão
chunk_size 4096;
application live {
live on;
# Habilita o módulo http-flv
# flv_live_buffer_size 1M; # Opcional: buffer para live FLV
# flv_max_frames_per_packet 1; # Opcional: otimização para latência
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080; # Porta HTTP para o player web
server_name localhost;
location /live {
# Habilita o servidor FLV para o caminho /live
flv_live on;
chunked_transfer_encoding on; # Essencial para streaming ao vivo
add_header Access-Control-Allow-Origin *; # Para acesso CORS em páginas HTML
}
}
}
Após modificar o arquivo, salve-o e inicie o Nginx executando nginx.exe na pasta principal. Verifique o log de erros em logs/error.log se encontrar problemas.
Transmissão de Vídeo com FFmpeg
Instalação do FFmpeg
O FFmpeg é a ferramenta essencail para codificação e transmissão de vídeo. Baixe a versão mais recente do site oficial do FFmpeg. Após o download, descompacte-o e adicione o diretório bin do FFmpeg ao PATH do sistema. Isso permitirá que você execute os comandos do FFmpeg a partir de qualquer diretório no terminal. Certifique-se de que o caminho de instalação não contenha caracteres especiais ou espaços para evitar potenciais erros.
Comando de Transmissão
Com o FFmpeg configurado, abra o Prompt de Comando (CMD) e execute o seguinte comando. Este exemplo fará a transmissão de um arquivo MP4 local em loop infinito para o servidor Nginx RTMP.
ffmpeg -re -stream_loop -1 -i "C:\caminho\para\seu\video.mp4" -c:v libx264 -preset veryfast -c:a aac -f flv rtmp://localhost/live/meu_fluxo
Este comando configura o FFmpeg para:
-re: Ler a entrada na taxa de quadros nativa.-stream_loop -1: Repetir o vídeo de entrada indefinidamente.-i "C:\caminho\para\seu\video.mp4": Especificar o arquivo de vídeo local como entrada. Substitua pelo caminho real do seu vídeo. É crucial que o caminho do arquivo e o nome não contenham espaços, ou, se contiverem, que sejam usados entre aspas.-c:v libx264: Utilizar o codec de vídeo H.264 para a saída.-preset veryfast: Definir uma predefinição de codificação rápida, equilibrando velocidade e qualidade.-c:a aac: Utilizar o codec de áudio AAC para a saída.-f flv: Forçar o formato de saída para FLV (Flash Video), que é compatível com RTMP.rtmp://localhost/live/meu_fluxo: O endereço de destino do fluxo RTMP, ondelocalhosté o servidor,liveé o nome da aplicação RTMP configurada no Nginx, emeu_fluxoé o nome do fluxo específico.
Ao executar o comando, o terminal exibirá informações sobre o progresso da codificação e transmissão. Se não houver mensagens de erro e a saída continuar a mostrar estatísticas de quadros e tempo, a transmissão está ocorrendo com sucesso.
Verificando o Fluxo de Vídeo
Reprodução via VLC Media Player (RTMP)
Para confirmar que o fluxo RTMP está ativo, você pode usar o VLC Media Player. No VLC, vá em "Mídia" > "Abrir Fluxo de Rede..." e insira o endereço RTMP: rtmp://localhost/live/meu_fluxo. Se o vídeo começar a ser reproduzido, isso indica que o FFmpeg está enviando o fluxo corretamente para o Nginx.
Reprodução via VLC Media Player (HTTP-FLV)
De forma similar, você pode testar o fluxo HTTP-FLV. No VLC, use a mesma opção "Abrir Fluxo de Rede..." e insira o URL: http://localhost:8080/live?stream=meu_fluxo.flv. A reprodução bem-sucedida aqui confirma que o Nginx está servindo o fluxo HTTP-FLV corretamente a partir da configuração do módulo RTMP.
Reprodução em Página Web com Tag <video>
Finalmente, para visualizar o vídeo em um navegador, crie um arquivo HTML (por exemplo, player.html) com o seguinte conteúdo:
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Player de Vídeo FLV Local</title>
<style>
body { font-family: sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; background-color: #f0f0f0; }
.video-container { background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); text-align: center; }
video { max-width: 100%; height: auto; border: 1px solid #ccc; }
h1 { color: #333; }
</style>
</head>
<body>
<div class="video-container">
<h1>Meu Fluxo de Vídeo Local</h1>
<video width="720" height="480" controls autoplay>
<source src="http://localhost:8080/live?stream=meu_fluxo.flv" type="video/x-flv">
Seu navegador não suporta a tag de vídeo FLV.
</video>
<p>Visualizando o fluxo HTTP-FLV de rtmp://localhost/live/meu_fluxo.</p>
</div>
</body>
</html>
Salve o arquivo e abra-o com seu navegador preferido. Se tudo estiver configurado corretamente, o vídeo local transimtido pelo FFmpeg e servido pelo Nginx será reproduzido na página web.