Viele von uns hören morgens gerne Radio. Doch eines schönen Morgens stellte ich fest, dass ich keine lokalen FM-Radiosender mehr hören wollte. Es war uninteressant. Aber die Gewohnheit war schÀdlich. Also beschloss ich, mein FM-Radio durch einen InternetempfÀnger zu ersetzen. Schnell kaufte ich die Teile bei AliExpress und baute einen InternetempfÀnger zusammen.
Ăber den InternetempfĂ€nger. Das Herz des EmpfangsgerĂ€ts ist der Mikrocontroller ESP32. Die Firmware stammt von KA-radio. Die Kosten fĂŒr die Teile beliefen sich auf 12 Dollar. Die Einfachheit des Zusammenbaus ermöglichte es mir, ihn in ein paar Tagen zusammenzubauen. Er funktioniert gut und stabil. In 10 Monaten Betrieb ist er nur ein paar Mal abgestĂŒrzt, und zwar nur wegen meiner Experimente. Eine praktische und durchdachte BenutzeroberflĂ€che ermöglicht die Steuerung ĂŒber Smartphone und Computer. Mit einem Wort, es ist ein wunderbarer InternetempfĂ€nger.
Alles ist toll. Aber an einem frĂŒhen Morgen kam ich zu dem Schluss, dass es bei Zugang zu Tausenden von Radiosendern keine interessanten Sender gibt. Die Werbung und die dummen Witze der Moderatoren nervten mich. Ich sprengte stĂ€ndig von einem Sender zum anderen. Ich mag Spotify und Yandex.Musik. Aber das Problem ist, dass sie in meinem Land nicht funktionieren. Ich wĂŒrde sie gerne ĂŒber den InternetempfĂ€nger hören.
Ich erinnerte mich an meine Kindheit. Ich hatte einen Kassettenrekorder und zwei Dutzend Kassetten. Ich tauschte Kassetten mit Freunden aus. Es war wunderbar. Ich beschloss, meine Audioarchive nur fĂŒr den InternetempfĂ€nger zu streamen. NatĂŒrlich gibt es die Möglichkeit, einen Audioplayer oder iPod an die Lautsprecher anzuschlieĂen und sich keine Gedanken zu machen. Aber das ist nicht unser Weg! Ich hasse es, AnschlĂŒsse anzuschlieĂen.)
Ich begann nach fertigen Lösungen zu suchen. Auf dem Markt gibt es ein Angebot, ein eigenes Internetradio von Radio-Tochka.com zu erstellen. Ich testete es 5 Tage lang. Mit meinem InternetempfĂ€nger funktionierte alles hervorragend. Aber der Preis war fĂŒr mich unattraktiv. Ich lehnte diese Option ab.
Ich habe ein bezahltes Hosting von 10 GB. Ich entschied mich, ein Skript in einer Programmiersprache zu schreiben, um den Audio-Stream meiner MP3-Dateien zu streamen. Ich entschied mich fĂŒr PHP. Ich schrieb es schnell und startete es. Alles funktionierte. Es war groĂartig! Aber nach ein paar Tagen erhielt ich einen Brief von der Hosting-Verwaltung. Darin wurde von einer Ăberschreitung der Prozessor-Minuten und der Notwendigkeit berichtet, auf einen höheren Tarif umzusteigen. Ich musste das Skript löschen und diese Option ablehnen.
Wie kann das sein? Ich kann nicht ohne Radio leben. Wenn ich das Skript auf einem fremden Host nicht ausfĂŒhren kann, benötige ich meinen eigenen Server. Wo ich das tun kann, was meine Seele begehrt.
Ich habe ein altes Netbook ohne Akku (CPU - 900 MHz, RAM - 512 Mb). Der alte Knabe ist schon 11 Jahre alt. DafĂŒr sollte er als Server gut geeignet sein. Ich installiere Ubuntu 12.04. Dann installiere ich Apache2 und PHP 5.3, Samba. Mein Server ist bereit.
Ich habe beschlossen, Icecast auszuprobieren. Ich habe viel darĂŒber gelesen. Aber es erschien mir kompliziert. Und ich entschied mich, zum PHP-Skripten zurĂŒckzukehren. Einige Tage habe ich mit der Fehlersuche in diesem Skript verbracht. Und alles lief wunderbar. Dann habe ich ein Skript zum Abspielen von Podcasts geschrieben. Es hat mir so gut gefallen, dass ich beschlossen habe, ein kleines Projekt zu erstellen. Ich nannte es IWScast. .

Alles ist ganz einfach. Ich kopiere die mp3-Dateien und die Datei index.php in das Stammverzeichnis von Apache /var/www/ und sie werden zufĂ€llig abgespielt. Etwa 300 Lieder reichen fĂŒr den ganzen Tag.
Die Datei index.php ist das Skript selbst. Das Skript liest alle Namen der mp3-Dateien im Verzeichnis in ein Array ein. Es erstellt einen Audio-Stream und fĂŒgt die Namen der mp3-Dateien ein. Manchmal hört man ein Lied und es gefĂ€llt einem. Man denkt, wer das singt? FĂŒr diesen Fall wird der Titel der gehörten Titel im Log file_log.txt aufgezeichnet.
Der vollstÀndige Code des Skripts
<?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: dein name");
header("icy-description: deine beschreibung");
$files = glob("*.mp3");
shuffle($files); //ZufÀllig ein
for ($x=0; $x array(
'method' =>'GET',
'header' =>'Icy-MetaData: 1',
'header' =>"Accept-language: de"
)
)
);
//In Log speichern
$fl = $filePath;
$log = date('Y-m-d H:i:s') . ' Lied - ' . $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);
}
?>Wenn die Tracks in der Reihenfolge abgespielt werden sollen, ist es notwendig, die Zeile in index.php auszukommentieren
shuffle($files); //ZufĂ€llig einFĂŒr Podcasts benutze ich /var/www/podcast/. Dort gibt es ein anderes Skript index.php. Darin wird der Verlauf der Podcast-Titel gespeichert. Beim nĂ€chsten Einschalten des Internetradios wird der nĂ€chste Podcast-Titel abgespielt. Es gibt auch ein Log der abgespielten Titel.
In der Datei counter.dat kann man die Nummer des Titels angeben, und von dort wird das Abspielen der Podcasts beginnen.
Ich habe Parser fĂŒr das automatische Herunterladen von Podcasts geschrieben. Er nimmt die letzten 4 Tracks aus dem RSS und lĂ€dt sie herunter. Das funktioniert alles wunderbar auf Smartphones, IPTV-Boxen und im Browser.
Vor kurzem kam mir morgens der Gedanke, dass es groĂartig wĂ€re, die Wiedergabeposition auf dem Track zu speichern. Aber ich weiĂ noch nicht, wie ich das mit PHP umsetzen kann.
Das Skript kann heruntergeladen werden
Quelle: habr.com
