Jou internetradio

Baie van ons luister graag soggens na die radio. En toe een goeie oggend besef ek dat ek nie na plaaslike FM-radiostasies wil luister nie. Stel nie belang nie. Maar die gewoonte blyk skadelik te wees. En ek het besluit om die FM-ontvanger met 'n internetontvanger te vervang. Ek het vinnig onderdele op Aliexpress gekoop en 'n internetontvanger saamgestel.

Oor die internetontvanger. Die hart van die ontvanger is die ESP32 mikrobeheerder. Firmware van KA-radio. Die onderdele het my $12 gekos. Die gemak van montering het my toegelaat om dit binne 'n paar dae te monteer. Werk goed en stabiel. In 10 maande se werk het dit net 'n paar keer gevries, en dan net as gevolg van my eksperimente. 'n Gerieflike en weldeurdagte koppelvlak laat jou toe om vanaf 'n slimfoon en rekenaar te beheer. In 'n woord, dit is 'n wonderlike internet ontvanger.

Alles is reg. Maar een vroegoggend het ek tot die gevolgtrekking gekom dat alhoewel ek toegang het tot tienduisende radiostasies, daar geen interessante stasies was nie. Ek was vererg oor die advertensies en die onnosel grappe van die aanbieders. Gedurig spring van een stasie na 'n ander. Ek hou van Spotify en Yandex.Music. Maar die hartseer is dat hulle nie in my land werk nie. En ek wil graag na hulle luister via die internetontvanger.

Ek het my kinderdae onthou. Ek het 'n bandopnemer en twee dosyn kassette gehad. Ek het kassette met vriende uitgeruil. En dit was wonderlik. Ek het besluit dat ek my oudio-argiewe net na 'n internetontvanger moet stroom. Natuurlik is daar 'n opsie om 'n oudiospeler of iPod aan die luidsprekers te koppel en nie bekommerd te wees nie. Maar dit is nie ons manier nie! Ek haat dit om verbindings te verbind)

Ek het begin soek na klaargemaakte oplossings. Daar is 'n aanbod op die mark om jou eie internetradio van Radio-Tochka.com te skep. Ek het dit vir 5 dae getoets. Alles het goed gewerk met my internet ontvanger. Maar die prys was nie vir my aantreklik nie. Ek het hierdie opsie van die hand gewys.

Ek het betaal om 10 GB te huisves. Ek het besluit om 'n draaiboek te skryf oor iets wat die klankstroom van my mp3-lΓͺers sou stroom. Ek het besluit om dit in PHP te skryf. Ek het dit vinnig geskryf en dit van stapel gestuur. Alles het gewerk. Dit was gaaf! Maar 'n paar dae later het ek 'n brief van die gasheeradministrasie ontvang. Dit het gesΓͺ dat die limiet van verwerkerminute oorskry is en die behoefte om op te gradeer na 'n hoΓ«r tarief. Die skrif moes uitgevee word en hierdie opsie is laat vaar.

Hoe het dit gebeur? Ek kan nie sonder radio lewe nie. As hulle jou nie toelaat om die skrif op iemand anders se hosting te laat loop nie, het jy jou eie bediener nodig. Waar ek sal doen wat my siel begeer.

Ek het 'n ou netboek sonder 'n battery (CPU - 900 MHz, RAM - 512 Mb). Die ou man is al 11 jaar oud. Geskik vir 'n bediener. Ek installeer Ubuntu 12.04. Toe installeer ek Apache2 en php 5.3, samba. My bediener is gereed.

Ek het besluit om Icecast te probeer. Ek lees baie mana daaroor. Maar ek het dit moeilik gevind. En ek het besluit om terug te keer na die opsie met 'n PHP-skrif. 'n Paar dae is spandeer om hierdie skrif te ontfout. En alles het uitstekend gewerk. Toe het ek ook 'n draaiboek geskryf om podcasts te speel. En ek het so baie daarvan gehou dat ek besluit het om 'n klein projek te doen. Het dit IWScast genoem. Geplaas op github.

Jou internetradio

Alles is baie eenvoudig. Ek kopieer die mp3-lΓͺers en die index.php-lΓͺer na die Apache-wortellΓͺer /var/www/ en hulle word ewekansig gespeel. Ongeveer 300 liedjies is genoeg vir ongeveer die hele dag.
Die index.php lΓͺer is die script self. Die skrip lees al die name van MP3-lΓͺers in 'n gids in 'n skikking. Skep 'n oudiostroom en vervang die name van MP3-lΓͺers. Daar is tye wanneer jy na 'n liedjie luister en jy daarvan hou. Wie dink jy sing? Vir so 'n geval is daar 'n opname van die name van geluisterde snitte in die log log.txt
Voltooi skrifkode

<?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: enrn"
       )
     )
   );
//Save to 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);
}
?>

As jy nodig het dat die snitte in volgorde gespeel moet word, moet jy die reΓ«l in index.php kommentaar lewer

shuffle($files); //Random on

Vir podcasts gebruik ek /var/www/podcast/ Daar is 'n ander script index.php. Dit het podcast track memorisering. Die volgende keer as jy die internetontvanger aanskakel, word die volgende poduitsendingsnit gespeel. Daar is ook 'n log van gespeelde snitte.
In die counter.dat-lΓͺer kan jy die snitnommer spesifiseer en poduitsendings sal daarvandaan begin.

Het ontleders geskryf vir outomatiese aflaai van poduitsendings. Dit neem die nuutste 4 snitte van RSS af en laai dit af. Dit alles werk uitstekend op 'n slimfoon, IPTV-dekkerboks of in 'n blaaier.

Die ander oggend het dit by my opgekom dat dit wonderlik sal wees om die afspeelposisie op 'n snit te onthou. Maar ek weet nog nie hoe om dit in PHP te doen nie.

Die skrif kan afgelaai word github.com/iwsys/IWScast

Bron: will.com

Voeg 'n opmerking