Rádio próprio na Internet

Muitos de nós gostam 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 é interessante. Mas o hábito acabou sendo prejudicial. E eu decidi substituir o receptor FM por um receptor da Internet. Comprou rapidamente peças no Aliexpress e montou um receptor de Internet.

Sobre o receptor da Internet. O coração do receptor é o microcontrolador ESP32. Firmware da KA-radio. O custo das peças me custou US $ 12. A facilidade de montagem me permitiu montá-lo em alguns dias. Funciona bem e de forma estável. Durante 10 meses de trabalho, ele foi suspenso apenas algumas vezes e isso foi apenas por causa das minhas experiências. A interface conveniente e atenciosa permite controlar a partir de um smartphone e computador. Em uma palavra, este é um maravilhoso receptor de Internet.

Está tudo bem. Mas, de manhã cedo, cheguei à conclusão de que, com acesso a dezenas de milhares de estações de rádio, não há estações interessantes. Fiquei irritado com publicidade, piadas estúpidas levando. Constantemente pulando de uma estação para outra. Eu gosto do Spotify e Yandex.Music. Mas o triste é que eles não funcionam no meu país. E eu gostaria de ouvi-los através do receptor da Internet.

Lembrei da minha infância. Eu tinha um gravador e duas dúzias de cassetes. Cassetes trocadas com os amigos. E foi maravilhoso. Decidi que precisava transmitir meus arquivos de áudio apenas para o receptor da Internet. Obviamente, existe uma opção para conectar um player de áudio ou ipod aos alto-falantes e não ao vapor. Mas este não é o nosso caminho! Eu odeio conectar os conectores)

Ele começou a procurar soluções prontas. Existe uma oferta no mercado para criar seu próprio rádio na Internet a partir de Radio-Tochka.com. Eu testei 5 dias. Tudo funcionou perfeitamente com o meu receptor de internet. Mas o preço não era atraente para mim. Recusou esta opção.

Eu tenho uma hospedagem paga de 10 GB. Decidi escrever um script sobre algo que estaria transmitindo o fluxo de áudio dos meus arquivos mp3. Eu decidi escrever em PHP. Escreveu e lançou rapidamente. Tudo funcionou. Foi otimo Alguns dias depois, porém, chegou uma carta da administração de hospedagem. Ele falou sobre exceder o limite de minutos do processador e a necessidade de mudar para uma tarifa mais alta. O script teve que ser removido e abandonado esta opção.

Como assim? Não posso viver sem rádio. Se você não tem permissão para executar o script na hospedagem de outra pessoa, precisará do seu próprio servidor. Onde farei o que minha alma deseja.

Eu tenho um netbook antigo sem bateria (CPU - 900 MHz, RAM - 512 Mb). O velho tem 11 anos. Para um servidor, tudo bem. Eu coloquei o Ubuntu 12.04. Em seguida, instale o Apache2 e o php 5.3, samba. Meu servidor está pronto.

Eu decidi tentar o Icecast. Eu li muita mana nele. Mas pareceu-me complicado. E eu decidi voltar para a opção com um script em PHP. Alguns dias foram gastos na depuração desse script. E funcionou perfeitamente. Também escrevi um roteiro para reproduzir podcasts. E gostei tanto que decidi fazer um pequeno projeto. Chamado de IWScast. Postado no github .

imagem

Tudo é muito simples. Copio os arquivos mp3 e o arquivo index.php na pasta raiz do Apache / var / www / e eles são reproduzidos aleatoriamente. Cerca de 300 músicas são suficientes para o dia inteiro aproximadamente.
O arquivo index.php é o próprio script. O script lê todos os nomes dos arquivos do diretório mp3 em uma matriz. Cria um fluxo de áudio e substitui os nomes de arquivos mp3. Há momentos em que você ouve uma música e gosta dela. Você acha que quem canta isso? Nesse caso, há um registro 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: en\r\n" ) ) ); //Save to log $fl = $filePath; $log = date('Ymd 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ê deseja que as faixas sejam reproduzidas em ordem, é necessário comentar a linha em index.php
 shuffle($files); //Random on 


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

Escreveu analisadores para baixar automaticamente podcasts. Ele pega as últimas 4 faixas do RSS e as baixa. Tudo isso funciona muito bem em um smartphone, decodificador IPTV, em um navegador.

Recentemente, pela manhã, tive a idéia de que foi ótimo memorizar a posição de reprodução na faixa. Mas ainda não sei como fazer isso em PHP.

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

Source: https://habr.com/ru/post/pt471954/


All Articles