Tu propia radio por Internet

A muchos de nosotros nos gusta escuchar la radio por la mañana. Y entonces, una buena mañana, me di cuenta de que no quería escuchar estaciones de radio FM locales. No interesado. Pero el hábito resultó perjudicial. Y decidí sustituir el receptor de FM por un receptor de Internet. Rápidamente compré piezas en Aliexpress y monté un receptor de Internet.

Sobre el receptor de Internet. El corazón del receptor es el microcontrolador ESP32. Firmware de KA-radio. Las piezas me costaron $12. La facilidad de montaje me permitió montarlo en un par de días. Funciona bien y de forma estable. En 10 meses de trabajo, se congeló solo un par de veces, y solo debido a mis experimentos. Una interfaz conveniente y bien pensada le permite controlar desde un teléfono inteligente y una computadora. En una palabra, este es un maravilloso receptor de Internet.

Todo está bien. Pero una madrugada llegué a la conclusión de que a pesar de tener acceso a decenas de miles de emisoras de radio, no había ninguna emisora ​​interesante. Me molestaba la publicidad y los chistes estúpidos de los presentadores. Saltando constantemente de una estación a otra. Me gustan Spotify y Yandex.Music. Pero lo triste es que en mi país no funcionan. Y me gustaría escucharlos a través del receptor de Internet.

Recordé mi infancia. Tenía una grabadora y dos docenas de casetes. Intercambié casetes con amigos. Y fue maravilloso. Decidí que necesitaba transmitir mis archivos de audio sólo a un receptor de Internet. Por supuesto, existe la opción de conectar un reproductor de audio o iPod a los altavoces y no te preocupes. ¡Pero éste no es nuestro camino! Odio conectar conectores)

Empecé a buscar soluciones ya preparadas. Existe una oferta en el mercado para crear su propia radio por Internet desde Radio-Tochka.com. Lo probé durante 5 días. Todo funcionó bien con mi receptor de Internet. Pero el precio no me resultó atractivo. Rechacé esta opción.

He pagado hosting de 10 GB. Decidí escribir un guión sobre algo que transmitiera el flujo de audio de mis archivos mp3. Decidí escribirlo en PHP. Rápidamente lo escribí y lo lancé. Todo funcionó. ¡Fue genial! Pero un par de días después recibí una carta de la administración del hosting. Dijo que se superó el límite de minutos de procesador y que era necesario actualizar a una tarifa más alta. Hubo que eliminar el script y abandonar esta opción.

¿Cómo ha ocurrido? No puedo vivir sin radio. Si no le permiten ejecutar el script en el hosting de otra persona, entonces necesita su propio servidor. Donde haré lo que mi alma desea.

Tengo una netbook antigua sin batería (CPU - 900 MHz, RAM - 512 Mb). El anciano ya tiene 11 años. Apto para un servidor. Instalo Ubuntu 12.04. Luego instalo Apache2 y php 5.3, samba. Mi servidor está listo.

Decidí probar Icecast. Leí mucho maná en él. Pero lo encontré difícil. Y decidí volver a la opción con un script PHP. Pasamos un par de días depurando este script. Y todo funcionó muy bien. Luego también escribí un guión para reproducir podcasts. Y me gustó tanto que decidí hacer un pequeño proyecto. Lo llamó IWScast. Publicado en github.

Tu propia radio por Internet

Todo es muy sencillo. Copio los archivos mp3 y el archivo index.php en la carpeta raíz de Apache /var/www/ y se reproducen aleatoriamente. Unas 300 canciones son suficientes para aproximadamente todo el día.
El archivo index.php es el script en sí. El script lee todos los nombres de archivos MP3 en un directorio en una matriz. Crea una secuencia de audio y sustituye los nombres de los archivos MP3. Hay veces que escuchas una canción y te gusta. ¿Quién crees que está cantando? Para tal caso, hay una grabación de los nombres de las pistas escuchadas en el registro log.txt.
código de secuencia de comandos 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);
}
?>

Si necesita que las pistas se reproduzcan en orden, debe comentar la línea en index.php

shuffle($files); //Random on

Para podcasts uso /var/www/podcast/. Hay otro script index.php. Dispone de memorización de pistas de podcast. La próxima vez que encienda el receptor de Internet, se reproducirá la siguiente pista del podcast. También hay un registro de las pistas reproducidas.
En el archivo counter.dat, puede especificar el número de pista y la reproducción del podcast comenzará a partir de ella.

Escribió analizadores para la descarga automática de podcasts. Toma las últimas 4 pistas de RSS y las descarga. Todo esto funciona muy bien en un teléfono inteligente, un decodificador de IPTV o en un navegador.

La otra mañana se me ocurrió que sería genial recordar la posición de reproducción en una pista. Pero todavía no sé cómo hacer esto en PHP.

El guión se puede descargar. github.com/iwsys/IWScast

Fuente: habr.com

Añadir un comentario