A túa propia radio por internet

A moitos nos gusta escoitar a radio pola mañá. E entón unha boa mañá decateime de que non quería escoitar as estacións de radio FM locais. Non interesado. Pero o hábito resultou prexudicial. E decidín substituír o receptor FM por un receptor de Internet. Comprei rapidamente pezas en Aliexpress e montei un receptor de Internet.

Sobre o receptor de Internet. O corazón do receptor é o microcontrolador ESP32. Firmware de KA-radio. As pezas me custou $12. A facilidade de montaxe permitiume montalo nun par de días. Funciona ben e de forma estable. En 10 meses de traballo, conxelouse só un par de veces, e despois só polos meus experimentos. Unha interface cómoda e ben pensada permítelle controlar desde un teléfono intelixente e un ordenador. Nunha palabra, este é un receptor de Internet marabilloso.

Todo está ben. Pero unha mañá cedo cheguei á conclusión de que a pesar de ter acceso a decenas de miles de emisoras de radio, non había emisoras interesantes. Molestábame a publicidade e as bromas estúpidas dos presentadores. Saltando constantemente dunha estación a outra. Gústame Spotify e Yandex.Music. Pero o triste é que non traballan no meu país. E gustaríame escoitalos a través do receptor de Internet.

Lembreime da miña infancia. Tiña unha gravadora e dúas ducias de casetes. Intercambiei casetes cos amigos. E foi marabilloso. Decidín que necesitaba transmitir os meus arquivos de audio só a un receptor de Internet. Por suposto, hai unha opción para conectar un reprodutor de audio ou iPod aos altofalantes e non te preocupes. Pero este non é o noso camiño! Odio conectar conectores)

Comecei a buscar solucións preparadas. Existe unha oferta no mercado para crear a túa propia radio por Internet desde Radio-Tochka.com. Probeino durante 5 días. Todo funcionou ben co meu receptor de internet. Pero o prezo non me resultou atractivo. Rexeitei esta opción.

Paguei 10 GB de hospedaxe. Decidín escribir un guión sobre algo que transmitise o fluxo de audio dos meus ficheiros mp3. Decidín escribilo en PHP. Axiña o escribín e lanzoo. Todo funcionou. Estaba xenial! Pero un par de días despois recibín unha carta da administración de acollida. Dicía que se superou o límite de minutos do procesador e a necesidade de actualizar a unha tarifa máis alta. Houbo que eliminar o script e abandonar esta opción.

Como pasou? Non podo vivir sen radio. Se non che permiten executar o script no hospedaxe doutra persoa, necesitas o teu propio servidor. Onde farei o que a miña alma queira.

Teño un netbook antigo sen batería (CPU - 900 MHz, RAM - 512 Mb). O vello xa ten 11 anos. Adecuado para un servidor. Instalo Ubuntu 12.04. Despois instalo Apache2 e php 5.3, samba. O meu servidor está listo.

Decidín probar Icecast. Lin moito mana sobre el. Pero resultoume difícil. E decidín volver á opción cun script PHP. Pasáronse un par de días depurando este script. E todo funcionou moi ben. Despois tamén escribín un guión para reproducir podcasts. E gustoume tanto que decidín facer un pequeno proxecto. Chamouno IWScast. Publicado en github.

A túa propia radio por internet

Todo é moi sinxelo. Copio os ficheiros mp3 e o ficheiro index.php no cartafol raíz de Apache /var/www/ e reprodúcense ao chou. Unhas 300 cancións son suficientes para aproximadamente todo o día.
O ficheiro index.php é o propio script. O script le todos os nomes dos ficheiros MP3 nun directorio nunha matriz. Crea un fluxo de audio e substitúe os nomes dos ficheiros MP3. Hai momentos nos que escoitas unha canción e gústache. Quen cres que canta? Para tal caso, hai unha gravación dos nomes das pistas escoitadas no rexistro 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 precisas que as pistas se reproduzan en orde, debes comentar a liña en index.php

shuffle($files); //Random on

Para os podcasts uso /var/www/podcast/ Hai outro script index.php. Ten memorización de pistas de podcast. A próxima vez que acenda o receptor de Internet, reproducirase a seguinte pista de podcast. Tamén hai un rexistro das pistas reproducidas.
No ficheiro counter.dat, podes especificar o número da pista e a reprodución do podcast comezará a partir del.

Escribiu analizadores para a descarga automática de podcasts. Toma as 4 cancións máis recentes de RSS e descárgaas. Todo isto funciona moi ben nun teléfono intelixente, un decodificador IPTV ou nun navegador.

A outra mañá ocorréuseme que sería xenial lembrar a posición de reprodución nunha pista. Pero aínda non sei como facelo en PHP.

O guión pódese descargar github.com/iwsys/IWScast

Fonte: www.habr.com

Engadir un comentario