Executando verificação de segurança...
4

Pitch: Minha jornada até colocar um projeto de final de semana rodando no YouTube 24/7

Olá pessoal, quero compartilhar com vocês minha jornada dos últimos dias que me levou a tantos descobrimentos sobre como funcionam as rádios 24/7 no YouTube e com implementar uma, tudo por conta de uma necessidade pontual de ter músicas que eu gosto, do meu jeito, para usar como foco no trabalho. Espero que esta história possa inspirar vocês a tirarem do papel alguns projetinhos de final de semana.

Como muitos de vocês, costumo colocar alguma playlist para tocar enquanto trabalho, isso me ajuda a cortar distrações e manter o foco nas atividades que necessitam de atenção. Eu gosto de colocar músicas instrumentais, então oscilo entre música clássica, violão instrumental, lo-fi, ou aquelas playlists de concentração no YouTube ou Spotify.

Tempo atrás eu descobri uma IA que faz músicas, dessas que estão em alta e que de vez em quando aparecem algumas músicas virais que são versões de músicas populares, só que em estilos como anos 80, como esta aqui. Então resolvi usar e fazer alguns arranjos de músicas clássicas em estilos que eu poderia gostar de ouvir - como bossa nova ou música tradicional chinesa - e em um arranjo que fosse propício para manter a concentração.

Beleza, fui lá e criei as músicas, gostei bastante do resultado e queria usar para trabalhar ou durante outros momentos do dia, só que tinha um pequeno detalhe: Como eu faço para escutar estas músicas de qualquer lugar sem ter que ficar trafegando arquivos entre vários dispositivos? Ora, posso fazer streaming disso, mas onde? Lá fui eu pesquisar sobre diversas opções, e aí entre opções de self-hosting, streaming privado e público, disponibilidade, preço e etc, acabei optando por fazer o streaming no YouTube, pois é público, não preciso fazer login em nenhuma aplicação e nem de configurações de rede específica, fica sempre disponível e é de graça (ou quase isso rs).

Show, agora eu precisava disponibilizar estes arquivos 24/7 para o YouTube, pensei em seguir o caminho de ver uma VPS, colocar um ffmpeg para juntar as músicas e alguma imagem de fundo em loop e correr pro abraço. Quebrei a cara de novo: As opções e preços de VPS são tantas que acabei errando algumas escolhas até acertar a que eu precisava, e depois de pedir alguns reembolsos e tentativas frustadas, posso resumir aqui para vocês:

  • Hostinger e Contabo fazem muito oversell das suas instâncias e acabamos dentro uma taxa de CPU stealing muito alto, e isso, para meu caso onde a máquina requer processamento previsível e contínuo, acaba sendo ruim.
  • Digital Ocean tem máquinas estáveis e excelentes, acontece que eles cobram por todo o tráfego de saída da instância a parte, e isso acaba subindo os custos de forma O(n) em relação ao número de streamings que eu vou disponibilizar.
  • Hetzner acabou sendo a opção que escolhi, pois possuem máquinas estáveis, com um preço justo e com uma boa cota de tráfego para a internet inclusos no pacote. O engraçado é que peguei uma instância bem menor aqui em relaçao a Contabo e consegui resultados muito superiores.

Outra coisa que acabei aprendendo neste processo foi sobre renderizar em tempo real para o streaming vs pré-renderizar os arquivos e apenas fazer o stream do disco para o endpoint RTMP. Meus requisitos neste projeto foram os seguintes:

  • As músicas precisam estar em loop e a playlist precisa reiniciar sozinha, só que a cada vez que reinicia, precisa ser em uma ordem aleatória diferente.
  • De preferência, a animação de fundo precisa ser contínua, sem interrupções entre as músicas.
  • Vou disponibilizar em 720p, uma vez que qualidade de imagem não é essencial para este tipo de stream.
  • Informações sobre a música atual precisam estar disponíveis na tela.

No primeiro momento, pensei em juntar os arquivos .mp3, .mp4 e .txt em tempo real, orquestrar o shuffle num bash, mandar pro ffmpeg e pronto. Acontece que subestimei fortemente a necessidade de processamento em tempo real para escrever uns textos na tela e juntar a música e o loop, pois uma única instância de streaming sendo renderizada, acabava custando cerca de 50-60% de CPU, o que acabaria deixando inviável ter várias streamings ao mesmo tempo na mesma VPS.

Pesquisando mais sobre custos de CPU e como otimizar isso, decidi ir pelo caminho de renderizar todos os vídeos primeiro, com as legendas das músicas, a animação e audio corretos, nas taxas de bits, quadros e resoluções corretas e compatíveis com o YouTube, para apenas fazer o stream direto do disco para o endpoint e o resultado foi surpreendente: Cada stream consome cerca de 5-8% de CPU, e isso considerando uma instrumentalização que coloquei para gerar logs de monitoramento e enviar alertas para o Telegram (posso falar disso em outro momento). Ao tomar essa decisão, acabei tendo que abrir mão de um dos requisitos: A animação de fundo corta a cada vez que uma nova música entra, pois a cada novo video, ela reinicia; Mas apesar disso, entendo que o saldo da decisão foi bem positivo.

Vocês podem ver que aqui o negócio já acabou tomando bastante corpo, então decidi que queria compartilhar mais sobre o projeto e continuar expandindo ele, o que levou, entre outras coisas, a criar este post aqui. Aqui estão algumas das coisas que pretendo fazer daqui pra frente:

  • Aumentar o repertório de músicas, mantendo as inspirações em músicas clássicas ou tradicionais.
  • Subir novos streamings em novos estilos, o repertório planejado até agora inclui: Bossa Nova, Synthwave, Música tradicional chinesa, Piano, Jazz, Medieval e Eletro House (EDM).
  • Encontrar outras pessoas que possam gostar do projeto, usufruir deste material e contribuir com ideias.

Acabei criando uma página web para este projeto, onde falo um pouco mais da filosofia dele e do repertório que já está disponível, vocês podem acessar em whitecatradio.com, lá tem mais detalhes sobre como vejo a questão de uso de músicas com base em IA e como este projeto não se posiciona como projeto artístico e nem para gerar qualquer tipo de lucro.

Se você chegou até aqui, fica o convite para conhecer o projeto e experimentar no seu dia a dia. E se tiver ideias, sugestões ou quiser trocar uma ideia sobre isso este projeto, ou sobre outro que você está trabalhando agora, comenta aqui também. Esse projeto nasceu de uma necessidade simples, mas tem muito espaço para crescer com a contribuição de outras pessoas.

Carregando publicação patrocinada...
2

Muito interessante sua experiência compartilhada. Tenho atuado como criador de web streaming audio only via servidores com fluxo: VPS → Playlist Automática → Servidor de Áudio → Ouvinte, porém nunca pensei na possibilidade do YouTube. Vou estudar mais sobre o assunto.

1

Interessante essa sua abordagem, poderia compartilhar mais sobre como funciona a distribuição e custos destes servidores de audio? Penso que poderia ser mais uma opção para o ouvinte neste meu projeto também, obrigado pela contribuição!