Eigenes Internetradio

Viele von uns hören morgens gerne Radio. Und dann, eines schönen Morgens, wurde mir klar, dass ich keine lokalen UKW-Radiosender hören wollte. Nicht interessant. Aber die Gewohnheit erwies sich als schädlich. Und ich habe beschlossen, den FM-Empfänger durch einen Internetempfänger zu ersetzen. Kaufte schnell Teile bei Aliexpress und baute einen Internetempfänger zusammen.

Über den Internetempfänger. Das Herzstück des Empfängers ist der ESP32-Mikrocontroller. Firmware von KA-Radio. Die Kosten für Teile kosten mich 12 Dollar. Die einfache Montage ermöglichte es mir, es in ein paar Tagen zusammenzubauen. Es funktioniert gut und stabil. Über 10 Monate Arbeit hing es nur ein paar Mal und das lag nur an meinen Experimenten. Dank der praktischen und durchdachten Benutzeroberfläche können Sie von einem Smartphone und Computer aus steuern. Mit einem Wort, dies ist ein wunderbarer Internetempfänger.

Alles ist cool. Aber eines frühen Morgens kam ich zu dem Schluss, dass es mit Zugang zu Zehntausenden von Radiosendern keine interessanten Sender gibt. Ich ärgerte mich über Werbung, dumme Witze führten. Ständig von einer Station zur anderen springen. Ich mag Spotify und Yandex.Music. Aber das Traurige ist, dass sie in meinem Land nicht arbeiten. Und ich möchte sie über den Internetempfänger hören.

Ich erinnerte mich an meine Kindheit. Ich hatte ein Tonbandgerät und zwei Dutzend Kassetten. Kassetten mit Freunden gewechselt. Und es war wunderbar. Ich habe beschlossen, dass ich meine Audioarchive nur auf den Internetempfänger streamen muss. Natürlich gibt es die Möglichkeit, einen Audio-Player oder iPod an die Lautsprecher anzuschließen und nicht zu dämpfen. Aber das ist nicht unser Weg! Ich hasse es, die Stecker anzuschließen)

Er begann nach vorgefertigten Lösungen zu suchen. Es gibt ein Angebot auf dem Markt, Ihr eigenes Internetradio von Radio-Tochka.com zu erstellen. Ich habe 5 Tage getestet. Mit meinem Internetempfänger hat alles perfekt funktioniert. Aber der Preis war für mich nicht attraktiv. Diese Option wurde abgelehnt.

Ich habe ein kostenpflichtiges Hosting von 10 GB. Ich habe beschlossen, ein Skript für etwas zu schreiben, das den Audiostream meiner MP3-Dateien streamen soll. Ich habe beschlossen, in PHP zu schreiben. Schnell geschrieben und gestartet. Alles hat funktioniert. Es war großartig! Ein paar Tage später kam ein Brief von der Hosting-Administration. Es ging darum, das Limit der Prozessorminuten zu überschreiten und auf einen höheren Tarif umzusteigen. Das Skript musste entfernt und diese Option aufgegeben werden.

Wie so? Ich kann nicht ohne Radio leben. Wenn Sie das Skript nicht auf dem Hosting einer anderen Person ausführen dürfen, benötigen Sie einen eigenen Server. Wo ich tun werde, was meine Seele wünscht.

Ich habe ein altes Netbook ohne Akku (CPU - 900 MHz, RAM - 512 MB). Der alte Mann ist 11 Jahre alt. Für einen Server ist das in Ordnung. Ich habe Ubuntu 12.04 gesetzt. Dann installieren Sie Apache2 und PHP 5.3, Samba. Mein Server ist bereit.

Ich habe mich für Icecast entschieden. Ich habe viel Mana darüber gelesen. Aber es schien mir kompliziert. Und ich beschloss, mit einem Skript in PHP zur Option zurückzukehren. Einige Tage wurden mit dem Debuggen dieses Skripts verbracht. Und es hat perfekt funktioniert. Dann habe ich auch ein Skript geschrieben, um Podcasts abzuspielen. Und es hat mir so gut gefallen, dass ich beschlossen habe, ein kleines Projekt zu machen. Nannte es IWScast. Gepostet auf Github .

Bild

Alles ist sehr einfach. Ich kopiere die MP3-Dateien und die Datei index.php in den Stammordner des Apache / var / www / und sie werden zufällig abgespielt. Etwa 300 Songs reichen ungefähr für den ganzen Tag.
Die Datei index.php ist das Skript selbst. Das Skript liest alle Namen von MP3-Verzeichnisdateien in ein Array. Erstellt einen Audiostream und ersetzt MP3-Dateinamen. Es gibt Zeiten, in denen Sie ein Lied hören und es Ihnen gefällt. Glaubst du, wer das singt? In diesem Fall werden die Namen der abgehörten Titel in der log log.txt aufgezeichnet
Vollständiger Skriptcode
<?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); } ?> 


Wenn Sie möchten, dass die Titel der Reihe nach abgespielt werden, müssen Sie die Zeile in index.php auskommentieren
 shuffle($files); //Random on 


Für Podcasts verwende ich / var / www / podcast / Es gibt ein anderes index.php-Skript. Es hat Podcast-Tracks auswendig zu lernen. Beim nächsten Einschalten des Internetempfängers wird der nächste Podcast-Titel abgespielt. Es gibt auch ein Protokoll der reproduzierten Spuren.
Sie können die Titelnummer in der Datei counter.dat angeben und die Podcast-Wiedergabe beginnt damit.

Schrieb Parser zum automatischen Herunterladen von Podcasts. Er nimmt die letzten 4 Tracks von RSS und lädt sie herunter. All dies funktioniert hervorragend auf einem Smartphone, einer IPTV-Set-Top-Box, in einem Browser.

Kürzlich am Morgen kam mir die Idee, dass es großartig ist, sich die Wiedergabeposition auf dem Track zu merken. Aber ich weiß noch nicht, wie das in PHP geht.

Das Skript kann unter github.com/iwsys/IWScast heruntergeladen werden

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


All Articles