Oma internetradio

Monet meistä haluavat kuunnella radiota aamuisin. Ja sitten eräänä kauniina aamuna tajusin, etten halunnut kuunnella paikallisia FM-radioasemia. Ei kiinnosta. Mutta tapa osoittautui haitalliseksi. Ja päätin vaihtaa FM-vastaanottimen Internet-vastaanottimeen. Ostin nopeasti osia Aliexpressistä ja kokosin Internet-vastaanottimen.

Tietoja Internet-vastaanottimesta. Vastaanottimen sydän on ESP32-mikro-ohjain. Laiteohjelmisto KA-radiosta. Osat maksoivat minulle 12 dollaria. Kokoamisen helppouden ansiosta pystyin kokoamaan sen parissa päivässä. Toimii hyvin ja vakaasti. 10 kuukauden työskentelyn aikana se jäätyi vain pari kertaa ja sitten vain kokeilujeni takia. Kätevän ja hyvin harkitun käyttöliittymän avulla voit ohjata älypuhelimesta ja tietokoneesta. Sanalla sanoen, tämä on upea Internet-vastaanotin.

Kaikki on hyvin. Mutta eräänä varhain aamuna tulin siihen tulokseen, että vaikka minulla oli pääsy kymmeniin tuhansiin radioasemiin, mielenkiintoisia asemia ei ollut. Minua ärsytti mainonta ja juontajien typerät vitsit. Jatkuvasti hyppääminen asemalta toiselle. Pidän Spotifysta ja Yandex.Musicista. Mutta surullista on, että ne eivät toimi maassani. Ja haluaisin kuunnella niitä Internet-vastaanottimen kautta.

Muistin lapsuuteni. Minulla oli nauhuri ja kaksi tusinaa kasettia. Vaihdoin kasetteja ystävien kanssa. Ja se oli upeaa. Päätin, että minun täytyy suoratoistaa ääniarkistoni vain Internet-vastaanottimeen. Tietenkin kaiuttimiin on mahdollista liittää äänisoitin tai iPod, eikä hätää. Mutta tämä ei ole meidän tapamme! Inhoan liittimien liittämistä)

Aloin etsiä valmiita ratkaisuja. Markkinoilla on tarjous oman Internet-radion luomisesta Radio-Tochka.com-sivustolta. Testasin sitä 5 päivää. Kaikki toimi hyvin internet-vastaanottimeni kanssa. Mutta hinta ei kiinnostanut minua. Hylkäsin tämän vaihtoehdon.

Olen maksanut hosting 10 Gt. Päätin kirjoittaa käsikirjoituksen jostakin, joka suoratoistaisi mp3-tiedostojeni äänivirran. Päätin kirjoittaa sen PHP:llä. Kirjoitin sen nopeasti ja käynnistin sen. Kaikki toimi. Se oli siistiä! Mutta pari päivää myöhemmin sain kirjeen isännöintihallinnolta. Se sanoi, että prosessoriminuuttien raja ylittyi ja tarve päivittää korkeampaan tariffiin. Skripti oli poistettava ja tämä vaihtoehto hylättävä.

Miten se tapahtui? En voi elää ilman radiota. Jos ne eivät salli sinun ajaa komentosarjaa jonkun muun isännöinnissä, tarvitset oman palvelimesi. Missä teen mitä sieluni haluaa.

Minulla on vanha netbook ilman akkua (CPU - 900 MHz, RAM - 512 Mb). Vanhus on jo 11-vuotias. Sopii palvelimelle. Asensin Ubuntu 12.04:n. Sitten asenna Apache2 ja php 5.3, samba. Palvelimeni on valmis.

Päätin kokeilla Icecastia. Luin siitä paljon manaa. Mutta minusta se oli vaikeaa. Ja päätin palata vaihtoehtoon PHP-skriptillä. Pari päivää kului tämän skriptin virheenkorjaukseen. Ja kaikki toimi loistavasti. Sitten kirjoitin myös käsikirjoituksen podcastien toistamiseksi. Ja pidin siitä niin paljon, että päätin tehdä pienen projektin. Sitä kutsuttiin IWScastiksi. Lähetetty githubiin.

Oma internetradio

Kaikki on hyvin yksinkertaista. Kopion mp3-tiedostot ja index.php-tiedoston Apachen juurikansioon /var/www/ ja ne toistetaan satunnaisesti. Noin 300 kappaletta riittää suunnilleen koko päiväksi.
Index.php-tiedosto on itse komentosarja. Skripti lukee kaikki hakemistossa olevien MP3-tiedostojen nimet taulukkoon. Luo äänivirran ja korvaa MP3-tiedostojen nimet. Joskus kuuntelet kappaletta ja pidät siitä. Kenen luulet laulavan? Tällaista tapausta varten kuunneltujen raitojen nimet tallennetaan lokiin log.txt
Täydellinen skriptikoodi

<?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);
}
?>

Jos haluat toistaa kappaleet järjestyksessä, sinun on kommentoitava rivi index.php:ssä

shuffle($files); //Random on

Podcasteihin käytän /var/www/podcast/ On olemassa toinen skripti index.php. Siinä on podcast-raitojen muisti. Kun seuraavan kerran kytket virran Internet-vastaanottimeen, seuraava podcast-raita toistetaan. Siellä on myös loki soitetuista kappaleista.
Counter.dat-tiedostossa voit määrittää raidan numeron ja podcastin toisto alkaa siitä.

Kirjoitti jäsentimiä podcastien automaattista lataamista varten. Se ottaa 4 viimeisintä raitaa RSS:stä ja lataa ne. Kaikki tämä toimii erinomaisesti älypuhelimessa, IPTV-digisovittimessa tai selaimessa.

Eräänä aamuna ajattelin, että olisi hienoa muistaa kappaleen toistokohta. Mutta en vielä tiedä kuinka tämä tehdään PHP:ssä.

Skriptin voi ladata github.com/iwsys/IWScast

Lähde: will.com

Lisää kommentti