Mnogi od nas ujutro vole slušati radio. I tako, jednog lijepog jutra, shvatio sam da ne želim slušati lokalne FM radio stanice. Nije mi zanimljivo. No, ta navika se pokazala štetnom. Odlučio sam zamijeniti FM prijemnik internet prijemnikom. Brzo sam kupio dijelove na Aliexpressu i sastavio internet prijemnik.
O internet prijemniku. Srce prijemnika je mikrokontroler ESP32. Firmware je od KA-radio. Cijena dijelova me koštala 12 dolara. Jednostavnost sastavljanja omogućila mi je da ga sastavim u nekoliko dana. Dobro i stabilno radi. Tijekom 10 mjeseci rada samo se dvaput objesio, i to samo zbog mojih eksperimenata. Praktičan i promišljen sučelje omogućava upravljanje putem pametnog telefona i računala. Ukratko, ovo je divan internet prijemnik.
Sve je super. Ali jednog ranog jutra, došao sam do zaključka da s pristupom desecima tisuća radio stanica nema zanimljivih stanica. Iritirala me je reklama, glupe šale voditelja. Neprestano sam skakao s jedne stanice na drugu. Sviđa mi se Spotify i Yandex.Muzika. No, tužna je činjenica da ne rade u mojoj zemlji. Htio bih ih slušati putem internet prijemnika.
Sjetio sam se svog djetinjstva. Imao sam kasetofon i dva desetka kaseta. Kasetama sam se mijenjao s prijateljima. Bilo je divno. Odlučio sam da trebam napraviti streaming svojih audio arhiva samo kroz internet prijemnik. Naravno, postoji mogućnost povezivanja audio playera ili iPoda s zvučnicima i ne brinuti se. No to nije naš put! Mrzim spajati konektore)
Počeo sam tražiti gotova rješenja. Na tržištu postoji ponuda za izradu vlastitog internet radija od Radio-Tochka.com. Testirao sam 5 dana. Moj internet prijemnik radio je savršeno. No, cijena se pokazala neprivlačnom za mene. Odustao sam od te opcije.
Imam plaćeni hosting od 10 GB. Odlučio sam napisati skriptu na nečemu kako bih imao streaming audio toka svojih mp3 datoteka. Odlučio sam to napisati na PHP-u. Brzo sam napisao i pokrenuo. Sve je proradilo. Bilo je super! No, nakon nekoliko dana stiglo je pismo od uprave hostinga. U njemu je pisalo o prekoračenju limita procesorskih minuta i potrebi prelaska na viši tarifni plan. Skriptu sam morao ukloniti i odustati od te opcije.
Kako to? Ne mogu živjeti bez radija. Ako ne dopuštaju pokretanje skripte na tuđem hostingu, potrebno je imati vlastiti server. Gdje ću raditi ono što moja duša želi.
Imam stari netbook koji leži bez baterije (CPU — 900 MHz, RAM — 512 Mb). Starac ima 11 godina. Potpun je za server. Instaliram Ubuntu 12.04. Zatim instaliram Apache2 i PHP 5.3, samba. Moj server je spreman.
Odlučio sam probati Icecast. Čitao sam dosta o njemu. Ali se učinio kompliciranim. I odlučio sam se vratiti na opciju sa skriptom na PHP-u. Proveo sam nekoliko dana usavršavajući tu skriptu. I sve je savršeno proradilo. Zatim sam napisao skriptu za reprodukciju podkasta. I toliko mi se svidjela da sam odlučio napraviti mali projekt. Nazvao sam ga IWScast. .

Sve je vrlo jednostavno. MP3 datoteke i datoteku index.php kopiram u root mapu apache-a /var/www/ i one se nasumično reproduciraju. Otprilike 300 pjesama dovoljno je za cijeli dan.
Datoteka index.php zapravo je sama skripta. Skripta čita sve nazive MP3 datoteka iz direktorija u niz. Stvara audio stream i ubacuje nazive MP3 datoteka. Ponekad, dok slušaš pjesmu i sviđa ti se, pitaš se tko to pjeva? U takvim slučajevima postoji zapis naziva slušnih svojih pjesama u logu log.txt
Kod skripte u cijelosti
<?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: vaše ime");
header("icy-description: vaš opis");
$files = glob("*.mp3");
shuffle($files); //Random on
for ($x=0; $x array(
'method' =>'GET',
'header' =>'Icy-MetaData: 1',
'header' =>"Accept-language: hr"
)
)
);
//Save to log
$fl = $filePath;
$log = date('Y-m-d H:i:s') . ' Pjesma - ' . $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);
}
?>Ako želite da se pjesme reproduciraju redom, trebate u index.php prokomentirati redak
shuffle($files); //Random onZa podkaste koristim /var/www/podcast/. Tamo je druga skripta index.php. U njoj se pamte pjesme podkastova. Prilikom sljedećeg uključivanja internetskog prijemnika reproducira se sljedeća pjesma podkasta. Također ima log reproduciranih pjesama.
U datoteci counter.dat možete navesti broj pjesme s kojeg će započeti reprodukcija podkasta.
Pisao sam parsere za automatsko preuzimanje podkasta. Uzima četiri posljednja traka iz RSS-a i preuzima ih. Sve to sjajno radi na pametnom telefonu, IPTV uređaju, u pregledniku.
Nedavno mi je ujutro pala na pamet misao da bi bilo sjajno napraviti pamćenje pozicije reprodukcije na traku. No još ne znam kako to napraviti u PHP-u.
Skriptu možete preuzeti
Izvor: habr.com
