Sua própria rádio na Internet

Muitos de nós gostamos de ouvir rádio pela manhã. E então, numa bela manhã, percebi que não queria ouvir estações de rádio FM locais. Não interessado. Mas o hábito acabou sendo prejudicial. E decidi substituir o receptor FM por um receptor de Internet. Rapidamente comprei peças no Aliexpress e montei um receptor de Internet.

Sobre o receptor de Internet. O coração do receptor é o microcontrolador ESP32. Firmware da rádio KA. As peças me custaram US$ 12. A facilidade de montagem me permitiu montá-lo em alguns dias. Funciona bem e de forma estável. Em 10 meses de trabalho, ele congelou apenas algumas vezes, e apenas por causa dos meus experimentos. Uma interface conveniente e bem pensada permite controlar a partir de um smartphone e um computador. Em uma palavra, este é um maravilhoso receptor de Internet.

Está tudo bem. Mas numa manhã cedo cheguei à conclusão de que apesar de ter acesso a dezenas de milhares de estações de rádio, não havia nenhuma estação interessante. Fiquei incomodado com a publicidade e as piadas estúpidas dos apresentadores. Pulando constantemente de uma estação para outra. Gosto do Spotify e do Yandex.Music. Mas o triste é que eles não funcionam no meu país. E gostaria de ouvi-los através do receptor de Internet.

Lembrei-me da minha infância. Eu tinha um gravador e duas dúzias de fitas cassete. Troquei fitas cassete com amigos. E foi maravilhoso. Decidi que precisava transmitir meus arquivos de áudio apenas para um receptor de Internet. Claro, existe a opção de conectar um reprodutor de áudio ou iPod aos alto-falantes e não se preocupe. Mas este não é o nosso caminho! Eu odeio conectar conectores)

Comecei a procurar soluções prontas. Existe uma oferta no mercado para criar sua própria rádio na Internet em Radio-Tochka.com. Testei por 5 dias. Tudo funcionou bem com meu receptor de internet. Mas o preço não me atraiu. Recusei esta opção.

Paguei hospedagem de 10 GB. Decidi escrever um script sobre algo que transmitisse o áudio dos meus arquivos mp3. Decidi escrevê-lo em PHP. Eu rapidamente escrevi e lancei. Tudo funcionou. Isso foi legal! Mas alguns dias depois recebi uma carta da administração de hospedagem. Afirmou que o limite de minutos do processador foi ultrapassado e a necessidade de atualização para uma tarifa superior. O script teve que ser excluído e esta opção abandonada.

Como isso aconteceu? Não vivo sem rádio. Se eles não permitirem que você execute o script na hospedagem de outra pessoa, você precisará de seu próprio servidor. Onde farei o que minha alma deseja.

Tenho um netbook antigo sem bateria (CPU - 900 MHz, RAM - 512 Mb). O velho já tem 11 anos. Adequado para um servidor. Eu instalo o Ubuntu 12.04. Então eu instalo o Apache2 e o php 5.3, samba. Meu servidor está pronto.

Decidi experimentar o Icecast. Eu li muito mana sobre isso. Mas achei difícil. E resolvi voltar à opção com script PHP. Foram gastos alguns dias depurando esse script. E tudo funcionou muito bem. Depois também escrevi um roteiro para reproduzir podcasts. E gostei tanto que resolvi fazer um pequeno projeto. Chamei-o de IWScast. Postado no github.

Sua própria rádio na Internet

Tudo é muito simples. Copio os arquivos mp3 e o arquivo index.php para a pasta raiz do Apache /var/www/ e eles são reproduzidos aleatoriamente. Cerca de 300 músicas são suficientes para aproximadamente o dia inteiro.
O arquivo index.php é o próprio script. O script lê todos os nomes de arquivos MP3 em um diretório em um array. Cria um fluxo de áudio e substitui os nomes dos arquivos MP3. Há momentos em que você ouve uma música e gosta dela. Quem você acha que está cantando? Nesse caso, há uma gravação dos nomes das faixas ouvidas no log log.txt
Código de script completo

<?php
set_time_limit(0);
header('Content-type: audio/mpeg');
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("icy-br: 128 ");
header("icy-name: your name");
header("icy-description: your description"); 
$files = glob("*.mp3");
shuffle($files); //Random on

for ($x=0; $x < count($files);) {
  $filePath =  $files[$x++];
  $bitrate = 128;
  $strContext=stream_context_create(
   array(
     'http'=>array(
       'method' =>'GET',
       'header' => 'Icy-MetaData: 1',
       'header' =>"Accept-language: enrn"
       )
     )
   );
//Save to log 
  $fl = $filePath; 
  $log = date('Y-m-d H:i:s') . ' Song - ' . $fl;
  file_put_contents('log.txt', $log . PHP_EOL, FILE_APPEND);
  $fpOrigin=fopen($filePath, 'rb', false, $strContext);
  while(!feof($fpOrigin)){
   $buffer=fread($fpOrigin, 4096);
   echo $buffer;
   flush();
 }
 fclose($fpOrigin);
}
?>

Se você precisar que as faixas sejam reproduzidas em ordem, será necessário comentar a linha em index.php

shuffle($files); //Random on

Para podcasts eu uso /var/www/podcast/ Existe outro script index.php. Possui memorização de faixas de podcast. Na próxima vez que você ligar o receptor de Internet, a próxima faixa de podcast será reproduzida. Há também um registro das faixas reproduzidas.
No arquivo counter.dat, você pode especificar o número da faixa e a reprodução do podcast começará a partir dele.

Escreveu analisadores para download automático de podcasts. Ele pega as últimas 4 faixas do RSS e as baixa. Tudo isso funciona muito bem em um smartphone, decodificador de IPTV ou em um navegador.

Outra manhã me ocorreu que seria ótimo lembrar a posição de reprodução de uma faixa. Mas ainda não sei como fazer isso em PHP.

O script pode ser baixado github.com/iwsys/IWScast

Fonte: habr.com

Adicionar um comentário