Eigenes Internet-Radio

Viele von uns hören morgens gerne Radio. Und an einem schönen Morgen wurde mir klar, dass ich keine lokalen FM-Radiostationen hören möchte. Es ist uninteressant. Aber die Gewohnheit war schädlich. Also entschied ich mich, den FM-Empfänger durch einen Internet-Empfänger zu ersetzen. Schnell kaufte ich die Teile bei AliExpress und baute den Internet-Empfänger zusammen.

Über den Internet-Empfänger. Das Herzstück des Empfängers ist der Mikrocontroller ESP32. Die Firmware stammt von KA-radio. Die Kosten für die Teile betrugen 12 Dollar. Die einfache Montage ermöglichte es mir, ihn in ein paar Tagen zusammenzubauen. Er funktioniert gut und stabil. In 10 Monaten Betrieb hatte ich nur ein paar Abstürze, und das lag nur an meinen Experimenten. Die praktische und durchdachte Benutzeroberfläche ermöglicht die Steuerung über Smartphone und Computer. Kurz gesagt, es ist ein ausgezeichneter Internet-Empfänger.

Alles ist toll. Aber eines frühen Morgens kam ich zu dem Schluss, dass es bei Zugang zu Zehntausenden von Radiosendern keine interessanten Sender gibt. Mich störten die Werbung, die dummen Witze der Moderatoren. Ich wechselte ständig von einem Sender zum anderen. Ich mag Spotify und Yandex.Music. Aber das Traurige ist, dass sie in meinem Land nicht verfügbar sind. Ich würde sie gerne über den Internet-Empfänger hören.

Ich erinnere mich an meine Kindheit. Ich hatte einen Kassettenrekorder und zwei Dutzend Kassetten. Ich habe die Kassetten mit meinen Freunden getauscht. Es war großartig. Ich entschied, dass ich meine Audioarchive nur für Internetempfänger streamen sollte. Natürlich gibt es die Möglichkeit, einen Audioplayer oder iPod an Lautsprecher anzuschließen und es zu ignorieren. Aber das ist nicht unser Weg! Ich hasse es, Anschlüsse zu verbinden)

Ich begann nach fertigen Lösungen zu suchen. Auf dem Markt gibt es das Angebot, ein eigenes Internet-Radio über Radio-Tochka.com zu erstellen. Ich habe es fünf Tage getestet. Mit meinem Internetempfänger funktionierte alles perfekt. Aber der Preis war für mich nicht attraktiv. Ich habe diese Option abgelehnt.

Ich habe ein bezahltes Hosting mit 10 GB. Ich beschloss, ein Skript in einer Programmiersprache zu schreiben, um den Audio-Stream meiner MP3-Dateien zu streamen. Ich entschied mich, es in PHP zu schreiben. Schnell geschrieben und gestartet. Es funktionierte großartig! Aber nach ein paar Tagen kam ein Brief von der Hosting-Administration. Darin wurde von der Überschreitung des Limits für CPU-Minuten und der Notwendigkeit, auf einen höheren Tarif zu wechseln, berichtet. Ich musste das Skript löschen und diese Option ablehnen.

Wie kann das sein? Ich kann nicht ohne Radio leben. Wenn ich kein Skript auf einem fremden Hosting starten darf, brauche ich einen eigenen Server. Wo ich das tun kann, was meine Seele verlangt.

Ich habe einen alten Netbook ohne Akku (CPU – 900 MHz, RAM – 512 Mb). Der alte Herr ist schon 11 Jahre alt. Er eignet sich gut als Server. 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. Also entschloss ich mich, zur PHP-Skriptlösung zurückzukehren. Einige Tage verbrachte ich mit der Fehlersuche dieses Skripts. Und es funktionierte wunderbar. Dann schrieb ich ein Skript für die Wiedergabe von Podcasts. Es gefiel mir so gut, dass ich ein kleines Projekt namens IWScast ins Leben rief. Ich habe es auf GitHub hochgeladen..

Eigenes Internet-Radio

Es ist ganz einfach. Ich kopiere die mp3-Dateien und die Datei index.php in das Wurzelverzeichnis von Apache /var/www/ und sie werden zufällig wiedergegeben. Etwa 300 Lieder reichen ungefähr für den ganzen Tag.
Die Datei index.php ist das Skript selbst. Das Skript liest alle MP3-Dateinamen im Verzeichnis in ein Array. Es erstellt einen Audio-Stream und fügt die MP3-Dateinamen ein. Es gibt Momente, in denen man ein Lied hört und es einem gefällt. Man fragt sich, wer das singt? Für solche Fälle gibt es eine Aufzeichnung der gehörten Titel im Log log.txt
Der Code des Skripts vollständig

<?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); //Zufällig an

for ($x=0; $x array(
       'method' =>'GET',
       'header' =>'Icy-MetaData: 1',
       'header' =>"Accept-language: enrn"
       )
     )
   );
//In Log speichern
  $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);
}
?>

Wenn die Titel in der Reihenfolge abgespielt werden sollen, muss in index.php die Zeile kommentiert werden

shuffle($files); //Zufällig an

Für Podcasts verwende ich /var/www/podcast/. Dort gibt es ein anderes Skript index.php. Es ermöglicht das Speichern der Podcast-Tracks. Bei der nächsten Aktivierung des Internetempfängers wird der nächste Track des Podcasts abgespielt. Außerdem gibt es ein Protokoll der abgespielten Tracks.
In der Datei counter.dat kann die Tracknummer angegeben werden, von der aus die Wiedergabe der Podcasts beginnen soll.

Ich habe Parser für den automatischen Download von Podcasts geschrieben. Er nimmt die letzten 4 Tracks aus dem RSS und lädt sie herunter. Das funktioniert hervorragend auf Smartphones, IPTV-Set-Top-Boxen und im Browser.

Neulich früh hatte ich die Idee, dass es großartig wäre, die Position der Wiedergabe bei einem Track zu speichern. Doch ich weiß noch nicht, wie ich das in PHP umsetzen kann.

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

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster