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

Erwerben 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