Oma internetiraadio

Paljud meist armastavad hommikuti raadiot kuulata. Ühel kaunil hommikul mĂ”istsin, et ei taha kuulata kohalikku FM-raadiot. See ei ole huvitav. Kuid harjumus oli kahjulik. Otsustasin asendada FM-vastuvĂ”tja internetivastuvĂ”tjaga. Kiiresti ostsin AliExpressist osad ja kokkupanin internetivastuvĂ”tja.

Interneti vastuvĂ”tjast. VastuvĂ”tja sĂŒda on mikrokontroller ESP32. Tootmisversioon KA-radio. Osade maksumus oli 12 dollarit. Kokkupanemise lihtsus vĂ”imaldas mul selle kokku panna paarikĂŒmne pĂ€evaga. Töötab hĂ€sti ja stabiilselt. 10 kuu jooksul on see kokku jooksnud vaid paar korda ja ainult minu eksperimenti tĂ”ttu. Mugav ja lĂ€bimĂ”eldud liides vĂ”imaldab hallata nutitelefoni ja arvuti kaudu. Üks sĂ”na - see on suurepĂ€rane internetivastuvĂ”tja.

KĂ”ik on suurepĂ€rane. Kuid ĂŒhel varahommikul jĂ”udsin jĂ€reldusele, et pÀÀsedele kĂŒmnetele tuhandetele raadiojaamadele ei ole huvitavaid jaamu. Reklaamid ja juhtide rumalad naljad ajasid mind tigedaks. HĂŒppasin pidevalt ĂŒhest jaamast teise. Mulle meeldib Spotify ja Yandex.Muusika. Kuid kurb on see, et need ei tööta minu riigis. Soovin neid kuulata lĂ€bi internetivastuvĂ”tja.

MĂ€letan oma lapsepĂ”lve. Mul oli magnetofon ja kaks tosinat kassetti. Vahetsin kassette sĂ”pradega. See oli imeline. Otsustasin, et pean oma heliarhiivide striimimist internetivastuvĂ”tjaga tegema. Loomulikult on vĂ”imalus ĂŒhendada audio mĂ€ngija vĂ”i iPod kĂ”laritega ja mitte muretseda. Kuid see ei ole meie tee! Ma vihkan pistikupesade ĂŒhendamist)

Alustasin valmis lahenduste otsimist. Turul on pakkumine luua oma internetiraadio Radio-Tochka.com-ist. Testisin 5 pÀeva. Minu internetivastuvÔtjaga töötas kÔik suurepÀraselt. Kuid hind osutus minu jaoks ebaatraktiivseks. Otsustasin sellest variandist loobuda.

Mul on makstud hostimine 10 GB. Otsustasin kirjutada skripti millegi jaoks, et oleks voogesitus muude mp3 failide audio voogest. Otsustasin kirjutada PHP-s. Kiiresti kirjutasin ja kĂ€ivitasin. KĂ”ik töötas. Oli suurepĂ€rane! Kuid paar pĂ€eva hiljem sain kirja hostimise haldustelt. Kirjas öeldi, et olen ĂŒletanud protsessoriminuutide piiri ja on vajalik kĂ”rgemale plaanile ĂŒle minna. Skript tuli kustutada ja sellest variandist loobuda.

Kuidas see nii on? Ma ei suuda elada raadiota. Kui skripti ei lubata kasutada teises hostis, siis peab olema oma server. Kus ma teen seda, mida mu hing soovib.

Mul on vana netbook, mis seisab akuta (CPU — 900 MHz, RAM — 512 Mb). Vanamees on juba 11 aastat vana. Serveriks sobib tĂ€iesti. Panen peale Ubuntu 12.04. Siis installin Apache2 ja PHP 5.3, samba. Minu server on valmis.

Otsustasin proovida Icecasti. Olen selle kohta palju lugenud. Kuid see tundus mulle keeruline. Ja otsustasin naasta PHP-skripti variandi juurde. Kulutasin paar pĂ€eva selle skripti silumisele. Ja kĂ”ik töötab suurepĂ€raselt. Siis kirjutasin veel skripti podcastide taasesitamiseks. See meeldis mulle nii palju, et otsustasin teha vĂ€ikese projekti. Nimetasin selle IWScast. Laadisin ĂŒles GitHubi.

Oma internetiraadio

KÔik on vÀga lihtne. MP3-failid ja fail index.php kopeerin Apache'i juurkatalooge /var/www/ ja need mÀngitakse suvaliselt. Umbes 300 laulu piisab terve pÀevaks.
Fail index.php ongi see skript. Skript loeb kÔik mp3-failide nimed kataloogist massiivi. Loob audiosööti ja lisab mp3-failide nimed. On hetki, kui kuulad laul, mis meeldib. Sa mÔtled, kes seda laulab? Sellise juhtumi jaoks on olemas kuulatud lugude nimede salvestamine log.txt faili.
Skripti kood tÀielikult

<?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); // Suvaline sisse

for ($x=0; $x array(
       'method' =>'GET',
       'header' =>'Icy-MetaData: 1',
       'header' =>"Accept-language: enrn"
       )
     )
   );
// Salvesta logisse 
  $fl = $filePath; 
  $log = date('Y-m-d H:i:s') . ' Laul - ' . $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);
}
?>

Kui on vaja, et lood mÀngitakse jÀrjekorras, siis tuleb index.php failis kommenteerida rida

shuffle($files); // Suvaline sisse

Podkastide jaoks kasutan /var/www/podcast/ Seal on teine skritp index.php. Sellel on podcastide lugude talletamine. JÀrgmise interneti vastuvÔtja kÀivitamisel mÀngitakse jÀrgmine podcasti lugu. Samuti on olemas mÀngitud lugude logi.
Failis counter.dat saab mÀÀrata loo numbri ja sealt alates algab podcastide taasesitamine.

Kirjutasin skripte, et automaatselt alla laadida podcaste. See vÔtab RSS-ist 4 viimast lugu ja laadib need alla. KÔik töötab suurepÀraselt nutitelefonis, IPTV seadmes ja brauseris.

Hiljuti tuli mul hommikul mÔte, et oleks tore teha mÀnguasade mÀlestuspunkti salvestamine. Kuid ma ei tea veel, kuidas seda PHP-s teha.

Skripti saab alla laadida github.com/iwsys/IWScast

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster