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 .

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);
Se você deseja que as faixas sejam reproduzidas em ordem, é necessário comentar a linha em index.php
shuffle($files);
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