Radio de internet propia

A muchos de nosotros nos gusta escuchar la radio por la mañana. Y luego, una buena mañana, me di cuenta de que no quería escuchar las estaciones locales de radio FM. No es interesante Pero el hábito resultó ser dañino. Y decidí reemplazar el receptor de FM con un receptor de Internet. Rápidamente compró piezas en Aliexpress y ensambló un receptor de Internet.

Sobre el receptor de Internet. El corazón del receptor es el microcontrolador ESP32. Firmware de KA-radio. El costo de las piezas me costó $ 12. La facilidad de montaje me permitió armarlo en un par de días. Funciona bien y de manera estable. Durante más de 10 meses de trabajo, colgó solo un par de veces y eso fue solo debido a mis experimentos. La interfaz conveniente y reflexiva le permite controlar desde un teléfono inteligente y una computadora. En una palabra, este es un maravilloso receptor de Internet.

Todo esta bien. Pero una mañana temprano llegué a la conclusión de que con acceso a decenas de miles de estaciones de radio no hay estaciones interesantes. Me molestaba la publicidad, los chistes estúpidos que guiaban. Saltando constantemente de una estación a otra. Me gusta Spotify y Yandex.Music. Pero lo triste es que no funcionan en mi país. Y me gustaría escucharlos a través del receptor de Internet.

Me acordé de mi infancia. Tenía una grabadora y dos docenas de casetes. Los casetes cambiaron con amigos. Y fue maravilloso. Decidí que necesitaba transmitir mis archivos de audio solo al receptor de Internet. Por supuesto, hay una opción para conectar un reproductor de audio o ipod a los altavoces y no a vapor. ¡Pero este no es nuestro camino! Odio conectar los conectores)

Comenzó a buscar soluciones preparadas. Existe una oferta en el mercado para crear su propia radio por Internet desde Radio-Tochka.com. Probé 5 días. Todo funcionó perfectamente con mi receptor de internet. Pero el precio no fue atractivo para mí. Rechazó esta opción.

Tengo un hosting pago de 10 GB. Decidí escribir un script en algo que transmitiría la transmisión de audio de mis archivos mp3. Decidí escribir en PHP. Rápidamente escribió y lanzó. Todo funcionó. Fue genial! Pero un par de días después, llegó una carta de la administración anfitriona. Se habló sobre exceder el límite de minutos del procesador y la necesidad de cambiar a una tarifa más alta. El script tuvo que ser eliminado y abandonó esta opción.

¿Cómo es eso? No puedo vivir sin una radio. Si no se le permite ejecutar el script en el alojamiento de otra persona, entonces necesita su propio servidor. Donde haré lo que mi alma desee.

Tengo una netbook antigua sin batería (CPU - 900 MHz, RAM - 512 Mb). El viejo tiene 11 años. Para un servidor, está bien. Puse Ubuntu 12.04. Luego instale Apache2 y php 5.3, samba. Mi servidor esta listo

Decidí probar Icecast. Leí mucho maná. Pero me pareció complicado. Y decidí volver a la opción con un script en PHP. Pasaron un par de días depurando este script. Y funcionó perfectamente. 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 .

imagen

Todo es muy sencillo. Copio los archivos mp3 y el archivo index.php a la carpeta raíz de Apache / var / www / y se reproducen al azar. Alrededor de 300 canciones son suficientes para todo el día aproximadamente.
El archivo index.php es el script en sí. El script lee todos los nombres de los archivos de directorio mp3 en una matriz. Crea una secuencia de audio y sustituye nombres de archivos mp3. Hay momentos en que escuchas una canción y te gusta. ¿Crees quién canta esto? Para este caso, hay un registro de los nombres de las pistas escuchadas en el registro 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); } ?> 


Si desea que las pistas se reproduzcan en orden, debe comentar la línea en index.php
 shuffle($files); //Random on 


Para los podcasts, uso / var / www / podcast / Hay otro script index.php. Tiene memorizar pistas de podcast. La próxima vez que encienda el receptor de Internet, se reproducirá la siguiente pista de podcast. También hay un registro de pistas reproducidas.
Puede especificar el número de pista en el archivo counter.dat y la reproducción del podcast comienza desde él.

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

Recientemente por la mañana tuve la idea de que era genial memorizar la posición de reproducción en la pista. Pero aún no sé cómo hacer esto en PHP.

El script se puede descargar github.com/iwsys/IWScast

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


All Articles