Como Transmitimos 24/7 na Twitch e no YouTube
Se você ainda não viu, transmitimos nossas aulas bíblicas 24 horas por dia, 7 dias por semana, no YouTube e no Twitch. E neste guia eu mostrarei como conseguimos isso tecnicamente.
A Resposta Básica
Usamos listas de reprodução FFmpeg em um droplet da Digital Ocean. Se isso não for o que você deseja usar, pode desistir agora.
Este guia será altamente técnico e específico sobre como realizei isso com nosso material. Alguns elementos podem não ser aplicáveis à sua configuração, mas, esperançosamente, lhe darão alguma direção.
1. Configurar o Droplet
Usamos Digital Ocean para criar nosso servidor remoto, mas você pode fazer a mesma configuração em qualquer outra plataforma que ofereça habilidades de linha de comando para executar scripts e instalar aplicativos e inclua transferência de dados mensal suficiente para transmissão 24 horas por dia, 7 dias por semana.
Aqui estão as especificações:
Consegui usar o Droplet de nível mais baixo com 512MB de RAM e 10GB de disco e montei um drive de Armazenamento em Volume para os vídeos.
2. Envie Seus Vídeos
Na sua unidade montada, ou se você estiver usando uma plataforma de hospedagem genérica, crie uma pasta videos e organize os vídeos da maneira que desejar trabalhar com eles. Aqui está como nós os organizamos:

Tudo é baseado em slugs e sequência. Nossas séries têm um slug (christianity-for-beginners) e cada lição tem um slug com a sequência do item antes dele.
É assim que nossos dados são armazenados em nosso banco de dados e serão usados ao gerar listas de reprodução e acompanhar onde estamos na ordem dos vídeos.
3. Adicionar FFmpeg
Abra seu terminal e verifique se você já tem o ffmpeg instalado:
ffmpeg -versão
Se não, execute o seguinte código para configurações Ubuntu:
sudo apt update
sudo apt install ffmpeg
Você pode executar a verificação de versão novamente para garantir que ela esteja lá.
4. Faça a Lista de Reprodução
O FFmpeg pode executar uma lista de vídeos baseada em uma playlist. Vamos criar uma. Eu chamo o arquivo em nosso sistema de assets.txt e está localizado na pasta raiz. É muito básico e se parece com isto:

Nossa lista completa de reprodução tem mais de 370 vídeos! Confira.
Em nossa função FFmpeg mais adiante, diremos ao FFmpeg para repetir, assim, quando chegar ao último vídeo, ele voltará ao início. Portanto, se seu script travar por qualquer motivo, ele sempre retornará ao começo da sua lista.
Este é um bônus, mas para evitar que ele sempre volte ao início, eu gero dinamicamente esta lista de reprodução a partir do nosso site, assim, se ela travar, eu sei em que posição estamos na lista e então redefino a ordem da lista dinamicamente. Aqui está uma breve visão geral desse processo.
Eu carrego um banco de dados com o ID do item e seu tempo de início e fim baseado na duração do vídeo. Eu pré-carrego isso por alguns meses e depois volto para mantê-lo atualizado. Você poderia ter outro script fazendo isso para você.

Antes de reiniciar a transmissão, eu faço um ping em nosso site e crio o assets.txt na nova ordem atualizada e o baixo para o Droplet remoto que você verá na próxima etapa.
5. Criando o Roteiro
Agora faremos um script bash para executar a partir de um Cronjob. Aqui está um gráfico do nosso script.

Ver roteiro como arquivo de texto: rerun.txt
Certifique-se de atualizar o {YOUR_STREAM_KEY} com sua chave real. Também pode atualizar o endpoint do Twitch para estar mais próximo da localização dos seus servidores. Ver Endpoints do Twitch.
Verifique os arquivos de script acima no formato Texto para ver as configurações que utilizei. Existem muitas opções e a documentação do FFmpeg é bastante boa. Você pode registrar erros como no final do script do Twitch acima para ver o que deu errado.
6. Executando o Script
Para executar o script, configuraremos um trabalho cron para lidar com isso. Aqui está um guia útil sobre Cronjobs caso você não esteja familiarizado.
Escolhi executar o script a cada minuto com o seguinte Cronjob porque o recurso de término automático do YouTube parece encerrar a transmissão após um minuto sem dados sendo enviados para eles, então descobri que é melhor executar isso com frequência.
* * * * * ./rerun.sh
Encerramento
Não cobri todos os aspectos do processo, apenas algumas das partes técnicas principais. Você ainda precisará ter conhecimento para criar suas configurações de Transmissão ao Vivo em qualquer uma das plataformas, mas isso deve ser um bom ponto de partida.
Contate-me no X com suas perguntas ou problemas e eu atualizarei este guia conforme os cenários forem compartilhados.



