Preparação do Ambiente e Dependências
Antes de iniciar a compilação do Nginx com suporte a streaming, é necessário instalar as ferramentas de compilação e bibliotecas essenciais. O processo varia conforme a distribuição Linux utilizada.
Sistemas baseados em Debian/Ubuntu
sudo apt update
sudo apt install -y gcc g++ perl libpcre3-dev zlib1g-dev openssl libssl-dev net-tools unzip wget
Sistemas baseados em RedHat/CentOS
sudo yum install -y gcc gcc-c++ perl pcre-devel zlib-devel openssl openssl-devel net-tools unzip wget
Nota técnica: Se estiver utilizando o OpenSSL 3.x, recomenda-se o uso do Nginx 1.24.0 ou superior. Para versões legadas do OpenSSL (1.x), utilize o Nginx 1.20.0 ou anterior.
Download do Nginx e do Módulo RTMP
Utilizaremos o diretório /usr/local/src para organizar os arquivos fonte. O módulo RTMP permite que o Nginx processe fluxos de vídeo em tempo real.
# Definição de versões
export NGINX_VERSION=1.24.0
export SRC_DIR=/usr/local/src
cd $SRC_DIR
# Download do Nginx
wget http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz
tar -zxvf nginx-$NGINX_VERSION.tar.gz
# Download do módulo RTMP (direto do repositório master)
wget https://github.com/arut/nginx-rtmp-module/archive/refs/heads/master.zip -O nginx-rtmp-module.zip
unzip nginx-rtmp-module.zip
Compilação e Instalação Personalizada
A etapa de configuração vincula o módulo RTMP ao binário do Nginx durante a compilação. Certifique-se de apontar o caminho correto para o diretório do módulo extraído.
cd $SRC_DIR/nginx-$NGINX_VERSION
# Configuração do build com o módulo externo
./configure --prefix=/usr/local/nginx --add-module=$SRC_DIR/nginx-rtmp-module-master
# Compilação e deploy
make && sudo make install
Após a conclusão, valide a instalação verificando a versão e os módulos carregados:
/usr/local/nginx/sbin/nginx -V
Gerenciamento do Serviço Nginx
Os comandos básicos para controle do processo do servidor são:
# Iniciar o servidor
/usr/local/nginx/sbin/nginx
# Encerrar imediatamente
/usr/local/nginx/sbin/nginx -s stop
# Recarregar configurações sem queda de conexão
/usr/local/nginx/sbin/nginx -s reload
Implementação de Streaming com JavaCV e FFmpeg
Para complementar o servidor Nginx, uma arquitetura de streaming robusta pode ser implementada utilizando MediaCaptorLive (baseado em JavaCV e FFmpeg). Esta abordagem oferece recursos avançados para gestão de fluxos:
- Suporte Multi-Protocolo: Compatibilidade simultânea com RTMP e HLS, permitindo flexibilidade conforme o player do cliente.
- Gerenciamento Automático de Recursos: Monitoramento e liberação de streams inativos ou corrompidos para garantir a estabilidade do sistema.
- Controle de TTL (Time-to-Live): Configuração personalizada de tempo de persistência para fluxos de transmissão, garantindo a continuidade do conteúdo.
- Ajuste Dinâmico de Parâmetros: Configuração granular de bitrate, framerate e resolução via código, adaptando-se a diferentes larguras de banda.
- Alta Performance: Otimização baseada em processamento nativo via FFmpeg para garantir baixa latência mesmo em cenários de alta concorrência.