La mia radio internet

Molti di noi amano ascoltare la radio al mattino. E così, una bella mattina, ho capito che non volevo ascoltare le stazioni FM locali. Non era interessante. Ma l'abitudine si è rivelata dannosa. Ho deciso di sostituire il ricevitore FM con un ricevitore internet. Ho rapidamente acquistato i componenti su AliExpress e ho assemblato un ricevitore internet.

Riguardo al ricevitore internet. Il cuore del ricevitore è un microcontrollore ESP32. 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. In una parola, è un fantastico ricevitore internet.

Tutto è fantastico. Ma una mattina presto ho concluso che, nonostante l'accesso a decine di migliaia di stazioni radio, non ci fossero stazioni interessanti. La pubblicità e le stupide battute dei conduttori mi infastidivano. Saltavo continuamente da una stazione all'altra. Mi piacciono Spotify e Yandex.Music. Ma la tristezza è che non funzionano nel mio paese. Vorrei ascoltarli attraverso il ricevitore internet.

Ho ricordato la mia infanzia. Avevo un mangianastri e un paio di dozzine di cassette. Scambiavo cassette con gli amici. Era meraviglioso. Ho deciso di fare lo streaming dei miei archivi audio solo sul ricevitore internet. Certo, c'era l'opzione di collegare un lettore audio o un iPod agli altoparlanti e non pensarci. Ma non è la nostra strada! Odio dover collegare cavi)

Ho iniziato a cercare soluzioni già pronte. Sul mercato c'è un'offerta per creare la mia radio internet da Radio-Tochka.com. L'ho testata per 5 giorni. Con il mio ricevitore internet, tutto funzionava perfettamente. Ma il prezzo si è rivelato poco attraente per me. Ho rinunciato a questa opzione.

Ho un hosting pagato da 10 GB. Ho deciso di scrivere uno script in qualcosa per lo streaming del mio audio in 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 dall'amministrazione dell'hosting. Diceva che avevo superato il limite delle ore di CPU e che dovevo passare a un piano superiore. Ho dovuto rimuovere lo script e rinunciare a questa opzione.

Ma come è possibile? Non posso vivere senza radio. Se non mi permettono di eseguire uno script su un hosting esterno, allora devo avere un mio server. Dove farò quello che la mia anima desidera.

Ho un vecchio netbook che giace senza batteria (CPU — 900 MHz, RAM — 512 Mb). Ha già 11 anni. È perfetto per un server. Installerò Ubuntu 12.04. Poi installerò Apache2 e PHP 5.3, samba. Il mio server è pronto.

Ho deciso di provare Icecast. Ho letto molto sulle sue guide. Ma mi è sembrato difficile. Così ho deciso di tornare alla variante con uno script PHP. Ho impiegato un paio di giorni per debuggare questo script. E tutto ha funzionato perfettamente. Poi ho anche scritto uno script per riprodurre i podcast. E mi è piaciuto così tanto che ho deciso di fare un piccolo progetto. L'ho chiamato IWScast. Ho caricato su github.

La mia radio internet

È tutto molto 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 è proprio lo script. Lo script legge tutti i nomi dei file mp3 dalla directory in un array. Crea uno stream audio e inserisce i nomi dei file mp3. Ci sono momenti in cui ascolti una canzone e ti piace. Ti chiedi, chi la canta? Per questo c'è la registrazione dei titoli delle tracce ascoltate nel log log.txt.
Il codice completo dello script

<?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 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 vuoi che le tracce siano riprodotte in ordine, devi commentare la riga in index.php

shuffle($files); //Random on

Per i podcast utilizzo /var/www/podcast/ Qui c'è un altro script index.php. In esso c'è il tracciamento delle tracce dei podcast. Al successivo avvio del ricevitore internet, verrà riprodotta la traccia successiva del podcast. C'è anche un log delle tracce riprodotte.
Nel file counter.dat puoi specificare il numero della traccia e da lì inizierà la riproduzione dei podcast.

Ho scritto dei parser per il download automatico dei podcast. Prende dai feed RSS i 4 ultimi brani e li scarica. Tutto funziona perfettamente su smartphone, set-top box IPTV e browser.

Recentemente, al mattino, mi è venuta in mente l'idea di implementare il salvataggio della posizione di riproduzione del brano. Ma non so ancora come farlo in PHP.

Il script può essere scaricato github.com/iwsys/IWScast

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster