Configuração de Servidor de Streaming Nginx com RTMP e HLS no Linux

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.

Tags: nginx RTMP HLS streaming Linux

Publicado em 7-28 23:54