Molti di noi amano ascoltare la radio al mattino. Un bel giorno, mi sono reso conto che non volevo più ascoltare le radio FM locali. Non erano interessanti. Ma l'abitudine era difficile da cambiare. Ho quindi deciso di sostituire il ricevitore FM con un ricevitore internet. Ho rapidamente acquistato i componenti su AliExpress e assemblato il ricevitore internet.
Riguardo al ricevitore internet. Il cuore del ricevitore è il microcontrollore ESP32. Ho utilizzato il firmware di KA-radio. Il costo dei componenti è stato di 12 dollari. La semplicità di assemblaggio mi ha permesso di completarlo in pochi giorni. Funziona bene e in modo stabile. In 10 mesi di utilizzo, si è bloccato solo un paio di volte, e solo a causa dei miei esperimenti. L'interfaccia comoda e ben progettata permette di gestirlo da smartphone e computer. Insomma, è un ottimo ricevitore internet.
Tutto fantastico. Ma una mattina presto, sono giunto alla conclusione che, con accesso a decine di migliaia di stazioni radio, non ci sono stazioni interessanti. La pubblicità e le stupide battute dei conduttori mi infastidivano. Saltavo continuamente da una stazione all'altra. Mi piace Spotify e Yandex.Music. Ma la tristezza è che non funzionano nel mio paese. Vorrei ascoltarli tramite il ricevitore internet.
Ho ricordato la mia infanzia. Avevo un mangianastri e un paio di dozzine di cassette. Scambiavo le cassette con gli amici. Era meraviglioso. Ho deciso che dovevo fare lo streaming dei miei archivi audio solo su un ricevitore internet. Certo, c'è la possibilità di collegare un lettore audio o un iPod alle casse e non pensarci. Ma non è la nostra strada! Odio collegare i connettori)
Ho iniziato a cercare soluzioni pronte. Sul mercato c'è un'offerta per creare la propria radio internet tramite Radio-Tochka.com. L'ho testata per 5 giorni. Con il mio ricevitore internet tutto funzionava perfettamente. Ma il prezzo si è rivelato poco interessante per me. Ho rinunciato a questa opzione.
Ho un hosting pagato di 10 GB. Ho deciso di scrivere uno script in qualcosa che permettesse lo streaming del flusso audio dei miei file mp3. Ho deciso di scriverlo in PHP. L'ho scritto rapidamente e l'ho avviato. Tutto ha funzionato. È stato fantastico! Ma dopo un paio di giorni è arrivata una lettera dalla direzione dell'hosting. Diceva che avevo superato il limite di minuti di processore e che era necessario passare a un piano superiore. Ho dovuto eliminare lo script e rinunciare a questa opzione.
Ma com'è possibile? Non posso vivere senza radio. Se non possono lanciare uno script su un hosting altrui, allora devo avere il mio server. Dove farò ciò che desidera la mia anima.
Ho un vecchio netbook che giace senza batteria (CPU — 900 MHz, RAM — 512 Mb). Ha già 11 anni. È perfetto per un server. Installo Ubuntu 12.04. Poi installo Apache2 e php 5.3, samba. Il mio server è pronto.
Ho deciso di provare Icecast. Ho letto molte guide su di esso. Ma mi è sembrato complicato. Così ho deciso di tornare alla soluzione con uno script PHP. Ho speso alcuni giorni a debuggarlo. E tutto ha funzionato perfettamente. Poi ho anche scritto uno script per riprodurre i podcast. Mi è piaciuto così tanto che ho deciso di fare un piccolo progetto. L'ho chiamato IWScast. .

È davvero semplice. Copio i file mp3 e il file index.php nella cartella principale di Apache /var/www/ e vengono riprodotti casualmente. Circa 300 canzoni bastano per tutto il giorno.
Il file index.php è lo script stesso. Lo script legge tutti i nomi dei file mp3 nella directory e li memorizza in un array. Crea un flusso audio e inserisce i nomi dei file mp3. Ci sono momenti in cui ascolti una canzone e ti piace. Pensi, chi la canta? In questo caso, c'è una registrazione dei titoli delle tracce ascoltate nel log log.txt
Il codice dello 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: il tuo nome");
header("icy-description: la tua descrizione");
$files = glob("*.mp3");
shuffle($files); //Random on
for ($x=0; $x (array(
'method' =>'GET',
'header' =>'Icy-MetaData: 1',
'header' =>"Accept-language: enrn"
)
)
);
//Save to log
$fl = $filePath;
$log = date('Y-m-d H:i:s') . ' Canzone - ' . $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 è necessario che le tracce vengano riprodotte in ordine, è necessario commentare la riga in index.php
shuffle($files); //Random onPer i podcast utilizzo /var/www/podcast/ Qui c'è un altro script index.php. Contiene la memorizzazione delle tracce dei podcast. Alla successiva accensione del ricevitore internet, verrà riprodotta la traccia successiva del podcast. C'è anche un registro delle tracce riprodotte.
Nel file counter.dat puoi specificare il numero della traccia e da quella inizierà la riproduzione dei podcast.
Ho scritto parser per il download automatico dei podcast. Preleva gli ultimi 4 brani dal RSS e li scarica. Tutto funziona splendidamente su smartphone, sul box IPTV e nel browser.
Recentemente, una mattina, ho avuto l'idea che sarebbe fantastico memorizzare la posizione di riproduzione sulla traccia. Ma non so ancora come farlo in PHP.
Puoi scaricare lo script
Fonte: habr.com
