Eigen internet radio

Veel van ons luisteren 's ochtends graag naar de radio. En op een mooie ochtend realiseerde ik me dat ik geen interesse had in de lokale FM-zenders. Niet interessant. Maar de gewoonte bleek schadelijk te zijn. Daarom besloot ik de FM-ontvanger te vervangen door een internetontvanger. Ik kocht snel de onderdelen op AliExpress en bouwde een internetontvanger.

Over de internetontvanger. Het hart van de ontvanger is de microcontroller ESP32. Firmware van KA-radio. De kosten van de onderdelen bedroegen 12 dollar. De eenvoud van de assemblage stelde me in staat om het in een paar dagen in elkaar te zetten. Werkt goed en stabiel. In 10 maanden is het slechts een paar keer vastgelopen, en dat alleen door mijn experimenten. Een handige en doordachte interface maakt het mogelijk om te bedienen vanaf een smartphone en computer. Kortom, het is een geweldige internetontvanger.

Alles is geweldig. Maar op een vroege ochtend kwam ik tot de conclusie dat, ondanks de toegang tot tienduizenden radiostations, er geen interessante stations waren. De reclame en de stomme grappen van de presentatoren irriteerden me. Ik schakelde constant van het ene station naar het andere. Ik hou van Spotify en Yandex.Music. Maar het trieste is dat ze niet in mijn land werken. En ik zou ze graag willen luisteren via de internetontvanger.

Ik herinnerde me mijn kindertijd. Ik had een tape-recorder en twee dozijn cassettes. Ik ruilde cassettes met vrienden. Het was geweldig. Ik besloot dat ik mijn audio-archieven alleen op de internetontvanger moest streamen. Natuurlijk is er de optie om een audio-speler of iPod op de luidsprekers aan te sluiten en het daarbij te laten. Maar dat is niet onze weg! Ik haat het om kabels aan te sluiten)

Ik begon naar kant-en-klare oplossingen te zoeken. Op de markt is er een aanbod om je eigen internet-radio te creƫren via Radio-Tochka.com. Ik heb het 5 dagen getest. Met mijn internetontvanger werkte alles perfect. Maar de prijs bleek voor mij niet aantrekkelijk. Ik besloot van deze optie af te zien.

Ik heb een betaalde hosting van 10 GB. Ik besloot een script te schrijven in iets dat het mogelijk maakte om audio-streaming van mijn mp3-bestanden te doen. Ik besloot het in PHP te schrijven. Snel geschreven en gestart. Alles werkte. Het was geweldig! Maar na een paar dagen ontving ik een e-mail van de hostingadministratie. Daarin stond dat ik het limiet van CPU-minuten had overschreden en dat ik naar een hoger tarief moest overstappen. Ik moest het script verwijderen en van deze optie afzien.

Hoe kan dit? Ik kan niet zonder radio leven. Als ze niet toestaan om een script op een vreemde host te starten, dan heb ik mijn eigen server nodig. Waar kan ik doen wat mijn ziel verlangt?

Ik heb een oude laptop zonder batterij (CPU - 900 MHz, RAM - 512 Mb) liggen. De oude man is al 11 jaar oud. Het is prima voor een server. Ik installeer Ubuntu 12.04. Vervolgens installeer ik Apache2 en PHP 5.3, Samba. Mijn server is klaar.

Ik besloot Icecast uit te proberen. Ik heb veel handleidingen erover gelezen. Maar het leek me ingewikkeld. Dus ik besloot terug te keren naar de optie met het PHP-script. Ik heb een paar dagen besteed aan het debuggen van dit script. En alles werkte prima. Daarna schreef ik nog een script voor het afspelen van podcasts. En ik vond het zo leuk dat ik besloot een klein project te maken. Ik noemde het IWScast. Ik heb het op github geplaatst..

Eigen internet radio

Het is heel eenvoudig. Ik kopieer de mp3-bestanden en het bestand index.php naar de hoofdmap van Apache /var/www/ en ze worden willekeurig afgespeeld. Ongeveer 300 nummers zijn voldoende voor de hele dag.
Het bestand index.php is het script zelf. Het script leest alle namen van mp3-bestanden in de directory in een array. Het maakt een audiostream en plaatst de namen van de mp3-bestanden erin. Soms luister je naar een nummer en vind je het leuk. Je vraagt je af: wie zingt dit? Voor zo'n geval zijn er notities van de afgespeelde nummers in de log log.txt.
De volledige code van het 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); //Willekeurig aan

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

Als je wilt dat de nummers op volgorde worden afgespeeld, moet je in index.php de regel uitcommentariƫren.

shuffle($files); //Willekeurig aan

Voor podcasts gebruik ik /var/www/podcast/. Daar is een ander script index.php. Dit script onthoudt de podcastnummers. Bij de volgende keer dat je de internetontvanger aanzet, wordt het volgende nummer van de podcast afgespeeld. Er is ook een log van de afgespeelde nummers.
In het bestand counter.dat kun je het nummer van het nummer opgeven, en dan begint het afspelen van de podcasts vanaf dat nummer.

Ik schreef parsers voor het automatisch downloaden van podcasts. Het neemt de 4 laatste tracks uit RSS en downloadt ze. Dit werkt geweldig op smartphones, IPTV-settopboxen en in de browser.

Onlangs had ik 's ochtends een gedachte dat het fantastisch zou zijn om de afspeelpositie van een track op te slaan. Maar ik weet nog niet hoe ik dit in PHP kan doen.

Het script kan worden gedownload github.com/iwsys/IWScast

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster