Ir-radju tal-internet tiegħek stess

Ħafna minna nħobbu nisimgħu r-radju filgħodu. U mbagħad filgħodu sabiħa indunajt li ma ridtx nisma’ stazzjonijiet tar-radju FM lokali. Mhux interessat. Iżda l-vizzju rriżulta li kien ta 'ħsara. U ddeċidejt li nissostitwixxi r-riċevitur FM b'riċevitur tal-Internet. Malajr xtrajt partijiet fuq Aliexpress u mmuntajt riċevitur tal-Internet.

Dwar ir-riċevitur tal-Internet. Il-qalba tar-riċevitur hija l-mikrokontrollur ESP32. Firmware minn KA-radju. Il-partijiet jiswewni $12. Il-faċilità ta 'assemblaġġ ippermettietni biex niġborha fi ftit jiem. Jaħdem tajjeb u stabbli. F'10 xhur ta 'xogħol, ffriżat biss ftit drabi, u mbagħad biss minħabba l-esperimenti tiegħi. Interface konvenjenti u maħsub sew jippermettilek tikkontrolla minn smartphone u kompjuter. Fi ftit kliem, dan huwa riċevitur tal-Internet mill-isbaħ.

Kollox tajjeb. Iżda filgħodu kmieni wasalt għall-konklużjoni li minkejja li kelli aċċess għal għexieren ta’ eluf ta’ stazzjonijiet tar-radju, ma kienx hemm stazzjonijiet interessanti. Iddejjaqni r-reklamar u ċ-ċajt stupidu tal-preżentaturi. Qbeż kontinwament minn stazzjon għall-ieħor. Jogħġobni Spotify u Yandex.Music. Imma l-ħaġa diqa hija li ma jaħdmux f'pajjiżna. U nixtieq nismagħhom permezz tar-riċevitur tal-Internet.

Ftakart fi tfuliti. Kelli tape recorder u żewġ tużżani cassettes. Bdilt il-cassettes mal-ħbieb. U kien meraviljuż. Iddeċidejt li kelli bżonn nistrimja l-arkivji awdjo tiegħi biss lil riċevitur tal-Internet. Naturalment, hemm għażla li tikkonnettja awdjo player jew iPod mal-kelliema u ma tinkwieta. Imma dan mhux il-mod tagħna! Ddejjaqni nqabbad il-konnetturi)

Bdejt infittex soluzzjonijiet lesti. Hemm offerta fis-suq biex toħloq ir-radju tal-Internet tiegħek stess minn Radio-Tochka.com. Ittestjajtu għal 5 ijiem. Kollox ħadem tajjeb mar-riċevitur tal-internet tiegħi. Imma l-prezz ma kienx attraenti għalija. Irrifjutajt din l-għażla.

Ħallast hosting 10 GB. Iddeċidejt li nikteb skript fuq xi ħaġa li tixxandar il-fluss awdjo tal-fajls mp3 tiegħi. Iddeċidejt li nikteb fil-PHP. Malajr ktibtha u nedietha. Kollox ħadem. Kien jibred! Imma ftit tal-jiem wara rċevejt ittra mill-amministrazzjoni ospitanti. Qal li l-limitu tal-minuti tal-proċessur inqabeż u l-ħtieġa li jiġi aġġornat għal tariffa ogħla. L-iskrittura kellha titħassar u din l-għażla abbandunata.

Kif ġara? Ma nistax ngħix mingħajr radju. Jekk ma jippermettux li tmexxi l-iskrittura fuq l-hosting ta 'xi ħadd ieħor, allura għandek bżonn is-server tiegħek. Fejn se nagħmel dak li tixtieq ruħi.

Għandi netbook tal-qedem mingħajr batterija (CPU - 900 MHz, RAM - 512 Mb). L-anzjan diġà għandu 11-il sena. Adattat għal server. Ninstalla Ubuntu 12.04. Imbagħad ninstalla Apache2 u php 5.3, samba. Is-server tiegħi huwa lest.

Iddeċidejt li nipprova Icecast. Qrajt ħafna mana fuqha. Imma sibtha diffiċli. U ddeċidejt li nirritorna għall-għażla bi skript PHP. Għaddew ftit jiem biex jiddibaggjaw dan l-iskritt. U kollox ħadem mill-aqwa. Imbagħad ktibt ukoll script biex nilgħab podcasts. U tant għoġobni li ddeċidejt li nagħmel proġett żgħir. Imsejjaħ IWScast. Mibgħut fuq github.

Ir-radju tal-internet tiegħek stess

Kollox huwa sempliċi ħafna. Nikkopja l-fajls mp3 u l-fajl index.php fil-folder tal-għeruq tal-Apache /var/www/ u jindaqqu b’mod każwali. Madwar 300 kanzunetta huma biżżejjed għal madwar il-ġurnata kollha.
Il-fajl index.php huwa l-iskript innifsu. L-iskrittura jaqra l-ismijiet kollha tal-fajls MP3 f'direttorju f'firxa. Joħloq fluss awdjo u jissostitwixxi l-ismijiet tal-fajls MP3. Hemm drabi meta tisma’ kanzunetta u togħġobkom. Min taħseb li qed ikanta? Għal każ bħal dan, hemm reġistrazzjoni tal-ismijiet tal-binarji mismugħa fil-log log.txt
Imla l-kodiċi tal-iskrittura

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

Jekk għandek bżonn li l-binarji jintlagħbu fl-ordni, allura trid tikkummenta l-linja f'index.php

shuffle($files); //Random on

Għall-podcasts nuża /var/www/podcast/ Hemm script index.php ieħor. Għandu memorizzazzjoni tal-binarji tal-podcast. Il-ħin li jmiss li tixgħel ir-riċevitur tal-Internet, tindaqq it-track tal-podcast li jmiss. Hemm ukoll log tal-binarji lagħbu.
Fil-fajl counter.dat, tista 'tispeċifika n-numru tal-binarju u l-plejbek tal-podcast se jibda minnu.

Kiteb parsers għat-tniżżil awtomatiku tal-podcasts. Huwa jieħu l-aħħar 4 binarji minn RSS u jniżżelhom. Dan kollu jaħdem tajjeb fuq smartphone, IPTV set-top box, jew fil-browser.

L-oħra filgħodu ġratli li jkun kbir li tiftakar il-pożizzjoni tal-plejbek fuq track. Imma għadni ma nafx kif tagħmel dan fil-PHP.

L-iskrittura tista' titniżżel github.com/iwsys/IWScast

Sors: www.habr.com

Żid kumment