Configurando um servidor RTMP de streaming

Crie uma conta Linode para experimentar este guia com um crédito de $ 100.Este crédito será aplicado a quaisquer serviços válidos usados ​​durante os primeiros 60 dias.Inscrever-se

A transmissão ao vivo se tornou uma maneira importante para criadores, jogadores, instrutores e personalidades da mídia alcançarem novos públicos. Muitos streamers ao vivo estão usando sites como Twitch e Facebook Live para transmitir. No entanto, um servidor de streaming RTMP ( Real-Time Messaging Protocol ) é outra maneira popular de distribuir transmissões ao vivo. O RTMP permite que você envie seu fluxo para um servidor central, que pode armazená-lo ou retransmiti-lo para reprodução do público.

Este guia discute como configurar um servidor de streaming RTMP e como usar software de código aberto para transmitir e conectar-se a um stream. Ele também explica como configurar multi-streaming para transmitir uma transmissão ao vivo simultaneamente para vários sites de mídia social.

Antes de você começar

  1. Se você ainda não o fez, crie uma conta Linode e Compute Instance. Veja nossos guias de Introdução ao Linode e Criando uma Instância de Computação .
  2. Siga nosso guia Configurando e protegendo uma instância de computação para atualizar seu sistema. Você também pode definir o fuso horário, configurar seu nome de host, criar uma conta de usuário limitada e proteger o acesso SSH.

ObservaçãoEste guia foi escrito para um usuário não root. Os comandos que exigem privilégios elevados são prefixados com 

sudo. Se você não estiver familiarizado com o 

sudocomando, consulte o guia de 

usuários e grupos do Linux .

Mais informações sobre RTMP

RTMP é um protocolo de rede, não um aplicativo. Ele usa a camada TCP ( Transmission Control Protocol ), para que a maioria dos servidores de mídia possa processá-lo. O RTMP era originalmente uma tecnologia proprietária pertencente à Adobe e foi projetada para transmissão de áudio, vídeo e dados de alto desempenho. No entanto, agora está disponível para uso público gratuito e atualmente é um dos formatos de streaming mais populares. A maioria dos codificadores pode transmitir RTMP, e os grandes sites de mídia o aceitam, mas o suporte do navegador pode ser irregular. Recomendamos que você use um reprodutor de mídia dedicado, como o VLC Media Player de código aberto gratuito para receber fluxos.

Se quiser saber mais sobre os detalhes técnicos por trás do RTMP, você pode descobrir mais no site de desenvolvimento da Adobe . A página da Wikipedia também fornece uma boa introdução.

Vantagens de usar um servidor de streaming RTMP

  • O RTMP é um protocolo robusto que oferece conexões persistentes e de baixa latência e transmissão confiável. Os fluxos são divididos em fragmentos, com o tamanho negociado entre o cliente e o servidor de streaming. Diferentes fluxos podem ser multiplexados na mesma conexão. É bastante fácil configurar e usar RTMP, mas você deve usar um software compatível com RTMP para transmitir seu fluxo para o servidor.
  • O uso de um servidor RTMP também permite implementar multi-streaming , o que reduz a quantidade de largura de banda usada em sua conexão local. Você transmite apenas uma cópia do seu stream para o servidor, mesmo que queira transmitir para várias plataformas. O RTMP se encarrega de encaminhar cópias do seu stream para quantos sites você quiser. Isso torna fácil e conveniente transmitir simultaneamente ao vivo para o YouTube, Facebook e Twitch ao mesmo tempo. No entanto, para alguns sites, você deve transcodificar o fluxo em um formato específico, alterando ou recompactando seu fluxo.

Requisitos de sistema

Um servidor de streaming RTMP não requer necessariamente muito poder de processamento ou memória. Para um único fluxo, uma solução Linode de 1 GB deve ser suficiente. Se você estiver retransmitindo para vários sites ou precisar converter um fluxo em um formato diferente, pode ser necessária uma solução mais poderosa. Neste caso, recomendamos um host com pelo menos 4 GB de memória , como uma solução Linode de 4 GB .

Um resumo do processo de configuração do servidor de streaming RTMP

Essas instruções de instalação são voltadas para o Ubuntu 20.04, mas o procedimento é semelhante na maioria das distribuições Linux. O RTMP é um protocolo e não um aplicativo, portanto, você não precisa instalá-lo. Para fazer uso do RTMP, você deve instalar um servidor web, como o NGINX , e realizar várias outras etapas de configuração. As seções a seguir descrevem cada etapa com mais detalhes.

  1. Instalar NGINX e componentes relacionados
  2. Configurar NGINX para dar suporte a RTMP
  3. Configurar e usar o cliente Open Broadcaster Software (OBS)
  4. Ver e testar o stream
  5. Configurar e testar multitransmissão

O NGINX possui suporte total a RTMP e o recomendamos como seu servidor de streaming RTMP. Siga estas etapas para instalar o NGINX.

  1. Atualize seu host com as atualizações de pacote mais recentes. sudo apt update sudo apt upgrade
  2. Instale o servidor NGINX, suporte RTMP e outros módulos relacionados. sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev nginx-full libnginx-mod-rtmp ffmpeg
  3. Verifique o status do servidor. systemctl status nginx.service Após a instalação, Systemctlretorna um status de active.nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-02-14 15:21:39 UTC; 41s ago

Configurar NGINX para dar suporte a RTMP

Para fazer stream, você deve configurar alguns parâmetros do servidor através do nginx.confarquivo e criar um aplicativo de stream. Esta seção explica como configurar o RTMP para aceitar um fluxo e disponibilizá-lo para visualização. Multi-streaming é discutido em uma seção posterior.

  1. Use seu editor de texto favorito e abra o arquivo de configuração NGINX, normalmente localizado em /etc/nginx/nginx.conf. sudo vi /etc/nginx/nginx.conf ObservaçãoSe você não encontrar o nginx.confarquivo, execute o comando sudo nginx -t. Ele exibe a localização do arquivo e valida sua sintaxe.
  2. Adicione alguma configuração RTMP ao final do nginx.confarquivo conforme mostrado neste exemplo.
    • chunk_sizeconfiguração define o tamanho do fragmento. O tamanho ideal varia dependendo do servidor, mas 4096é um valor padrão razoável.
    • A porta padrão para a listenvariável é 1935.
    • Dentro da configuração do servidor, crie um aplicativo e dê um nome a ele. Este exemplo usa livestreamcomo nome do aplicativo, mas por motivos de segurança, recomendamos que você escolha um nome mais distinto. Você deve definir livecomo onpara habilitar o streaming.
    • Se você quiser salvar uma cópia de seus streams, defina a recordvariável como all. Caso contrário, defina-o como none.
    • Se você definir recordcomo all, deverá configurar um valor para record_path. É aqui que as gravações de seus streams são salvas.
    • Recomendamos adicionar um método de autenticação para que seus fluxos não sejam invadidos. Definir um local para on_publishaqui permite ativar a validação de senha em uma etapa subsequente.Arquivo: /etc/nginx/nginx.conf
    • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... rtmp { server { listen 1935; chunk_size 4096; notify_method get; application livestream { live on; on_publish http://localhost/auth; #Set this to "record off" if you don't want to save a copy of your broadcasts record all; #The directory in which the recordings will be stored record_path /var/www/html/streams; record_unique on; } } }
  3. Crie um diretório para salvar seus streams. A localização do diretório deve corresponder ao valor de record_path. sudo mkdir -p /var/www/html/streams
  4. Defina as permissões para o novo diretório para que o servidor possa gravar nele. sudo chown -R www-data:www-data /var/www/html/streams/
  5. Se você pretende impor a autenticação para fluxos de entrada, abra o /etc/nginx/sites-enabled/defaultarquivo e adicione as seguintes informações dentro do serverbloco. Substitua yourpasswordpor uma senha mais segura.
    • Se a senha que você fornecer ao iniciar sua transmissão corresponder à senha neste arquivo, o servidor de transmissão retornará um código HTML de 200(“OK”).
    • Se a senha estiver incorreta, ele retorna um código de 401(“Não autorizado”) e desconecta a sessão.Arquivo: /etc/nginx/sites-enabled/default1 2 3 4 5 6 7 8 9 ... listen 8080; location /auth { if ($arg_pwd = 'yourpassword') { return 200; } return 401; }
  6. Reinicie o servidor para aplicar suas alterações. systemctl restart nginx.service
  7. Revise o status do servidor para garantir que ele ainda esteja em execução. Procure o status de active. systemctl status nginx.service

Observação

Você pode encontrar exemplos mais detalhados de configurações NGINX para RTMP na página NGINX GitHub .

Você pode forçar os espectadores a se autenticarem antes de assistir a um stream com a on_playvariável, que funciona da mesma forma que on_publish. Para segurança extra, você pode remover a htmlconfiguração deste arquivo se não estiver planejando usar o NGINX como um servidor web. Certifique-se de não excluir o eventsbloco de configuração ao fazê-lo.

Configurar e usar o cliente Open Broadcaster Software (OBS)

Os streamers geralmente usam um serviço comercial de streaming baseado na Web ou um aplicativo em seu computador. Para transmitir para seu servidor RTMP, recomendamos o Open Broadcaster Software (OBS) . O OBS é um aplicativo de transmissão de código aberto gratuito que é flexível e fácil de usar. Está disponível para os sistemas operacionais mais comuns, incluindo o Ubuntu.

  1. Acesse o site do OBS e escolha o download apropriado para o seu sistema. Este software deve ser instalado em seu computador e não no servidor de streaming RTMP.
  2. Abra o aplicativo e procure o Controlsmenu na parte inferior direita da janela do aplicativo. Clique no botão Configurações .A seção de controles do OBS
  3. Quando a janela Configurações aparecer, clique em Stream no painel esquerdo e insira as seguintes informações sobre seu stream:
    • ServiceCustom
    • Serverrtmp://<yourserverIP>/<RTMP_application>.
      • Substitua yourserverIPpelo endereço IP real do seu servidor de streaming.
      • Substitua RTMP_applicationpelo nome que você escolheu para seu aplicativo no bloco de configuração RTMP. No exemplo anterior, usamos o nome livestream.
    • Stream Key<your_stream_name?pwd=yourpassword>.
      • your_stream_namepode ser qualquer nome que você queira para identificar o stream.
      • yourpasswordé a senha que você configurou em /etc/nginx/sites-enabled/default.
    • Clique em OK .

    Configurações de stream para OBS

  4. Para iniciar a transmissão, clique no botão Iniciar transmissão no canto inferior direito do aplicativo na Controlsseção.Botão Iniciar Streaming para OBSObservaçãoUma maneira rápida de testar seu fluxo é com uma mensagem de texto de rolagem. Clique no botão +sources no menu para criar um objeto de texto. Quando você tiver criado o objeto, clique com o botão direito do mouse na fonte e selecione o filtro para aplicar um efeito de rolagem. Consulte o Wiki do OBS para obter mais informações.
  5. Se você estiver gravando seus fluxos, poderá confirmar facilmente se o servidor está aceitando a entrada transmitida ou não. Navegue até o record_pathdiretório (da sua configuração RTMP) e liste seu conteúdo com o lscomando. Se você vir um novo arquivo, o servidor de streaming está recebendo e salvando seu stream corretamente. cd /var/www/html/streams ls ObservaçãoA transmissão em uma taxa muito alta pode fazer com que o OBS se desconecte do servidor. Se sua conexão for rejeitada, clique em Configurações e selecione Saída . Defina o Video Bitratepara um valor mais baixo. O OBS fornece algumas dicas úteis de depuração na página do GitHub do OBS .

Ver e testar o stream

Agora você está pronto para se conectar e visualizar seu fluxo em um reprodutor multimídia. Recomendamos o VLC Video Player de código aberto porque é simples, gratuito, tem bom desempenho e roda em todas as plataformas. Estas instruções e as capturas de tela associadas são para um desktop Apple, mas o processo é semelhante para outros sistemas operacionais.

  1. Navegue até o site VideoLAN e baixe o software VLC para seu sistema operacional.
  2. Clique no menu Arquivo e selecione Abrir rede .Opção de rede aberta para VLC
  3. Isso exibe a caixa de diálogo “Open Source”. No URLcampo, insira as informações do seu stream no formato rtmp://<yourserverIP>/<RTMPApplication>/<your_stream_name>. Substitua yourserverIPpelo IP real do seu servidor de streaming e RTMPApplicationpelo nome do aplicativo de stream do arquivo de configuração do servidor. O valor de your_stream_namedeve corresponder ao nome do stream do OBS. Por fim, marque a Stream outputcaixa.Configuração de rede para VLC

ObservaçãoAlém do básico, o VLC pode ficar complicado. Se você tiver problemas, consulte a 

página de suporte do VideoLAN .

Configurar e testar multitransmissão

O RTMP é particularmente uma boa opção para streaming para vários sites ao mesmo tempo, pois economiza largura de banda com eficiência. Em vez de ter que transmitir um fluxo separado para cada canal, você pode enviar um fluxo para o servidor de fluxo RTMP. O servidor então lida com a redistribuição de fluxos, enviando uma cópia para cada terminal. Você pode habilitar o multi-streaming em sua configuração RTMP com uma pushentrada para cada destino. Para configurar o multi-streaming, siga o procedimento abaixo:

  1. Abra o /etc/nginx/nginx.confarquivo para edição. sudo vi /etc/nginx/nginx.conf
  2. Localize as informações de ingestão do serviço para o qual você deseja transmitir. Por exemplo, o Twitch fornece uma lista de todos os seus pontos de ingestão . Encontre o ponto de ingestão mais próximo de você e anote o URL de ingestão. Para o YouTube, você pode encontrar o URL do servidor de ingestão na sua página do YouTube Studio. Consulte a documentação do seu serviço de streaming para obter informações mais detalhadas.
  3. Adicione uma notificação por push para cada serviço ao bloco de aplicativo de fluxo na configuração RTMP. A configuração deve estar no formato push rtmp://<streaming_service_ingest_url>/<stream_key>;. O streaming_service_ingest_urlé o URL de ingestão que você localizou na etapa anterior. Cada serviço de streaming oferece uma maneira de você determinar sua privacidade stream_key. No Twitch, você pode encontrar sua chave de transmissão em seu painel, enquanto no YouTube, ela está no mesmo local em que você encontrou o URL do servidor de ingestão. Este exemplo ilustra a configuração para enviar para o servidor de ingestão de Londres do Twitch.Arquivo: /etc/nginx/nginx.conf 1 2 3 4 5 6 7 8 9 10 11 ... rtmp { server { ... application livestream { ... push rtmp://lhr04.contribute.live-video.net/app/<stream_key>; } } }
  4. Adicione pushentradas adicionais para os outros sites para os quais você está transmitindo.
  5. Reinicie o servidor para aplicar suas alterações. systemctl restart nginx.service
  6. Inicie sua transmissão novamente. Agora você pode visualizá-lo no site de streaming de sua escolha.
  7. (Opcional) Para maior segurança e controle mais granular, você pode criar um aplicativo para cada serviço de streaming e chamá-lo do aplicativo principal. Essa técnica oferece a capacidade de substituir as livestreamconfigurações e desativar a gravação de alguns serviços. Edite cada pushnotificação em seu livestreamaplicativo para enviar para o novo aplicativo.No exemplo acima:
    • Altere a configuração push do Twitch para push rtmp://localhost/twitch;.
    • Adicione a configuração para application twitchcomo mostrado abaixo.
    • Reinicie o servidor e seu stream assim que terminar para verificar se as alterações estão corretas.Arquivo: /etc/nginx/nginx.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... rtmp { server { ... application livestream { ... push rtmp://localhost/twitch; } application twitch { live on; record off; allow publish 127.0.0.1; deny publish all; push rtmp://lhr04.contribute.live-video.net/app/<stream_key>; } } }

Observação

Os servidores de ingestão podem ser alterados sem aviso prévio. Recomendamos que você revise as especificações do seu serviço de streaming regularmente. Alguns serviços de streaming, como o Facebook Live, exigem que você transcodifique seu stream em seu formato específico. Você pode fazer isso usando a biblioteca FFmpeg .

Consulte a página NGINX GitHub para obter uma configuração de exemplo.

Mais Informações

Você pode querer consultar os seguintes recursos para obter informações adicionais sobre este tópico. Embora estes sejam fornecidos na esperança de que sejam úteis, observe que não podemos garantir a precisão ou pontualidade dos materiais hospedados externamente.

You May Also Like

More From Author