Pwòp radyo entènèt ou

Anpil nan nou renmen koute radyo nan maten. Lè sa a, yon bon maten mwen reyalize ke mwen pa t 'vle koute estasyon radyo FM lokal yo. Pa entèrese. Men, abitid la te tounen danjere. Apre sa, mwen deside ranplase reseptè FM la ak yon reseptè entènèt. Mwen byen vit te achte pati sou Aliexpress ak rasanble yon reseptè entènèt.

Konsènan reseptè entènèt la. Kè reseptè a se mikrokontroleur ESP32 la. Firmware soti nan KA-radyo. Pati yo koute m '$12. Fasilite asanble a pèmèt mwen rasanble li nan yon koup de jou. Travay byen epi ki estab. Nan 10 mwa nan travay, li te jele sèlman yon koup de fwa, ak Lè sa a, sèlman paske nan eksperyans mwen yo. Yon koòdone pratik ak byen panse pèmèt ou kontwole nan yon smartphone ak òdinatè. Nan yon mo, sa a se yon reseptè entènèt bèl bagay.

Tout bagay anfòm. Men, yon maten byen bonè mwen te rive nan konklizyon ke malgre gen aksè a plizyè dizèn de milye estasyon radyo, pa te gen okenn estasyon enteresan. Mwen te anbete pa piblisite a ak blag estipid prezantatè yo. Toujou ap sote soti nan yon estasyon nan yon lòt. Mwen renmen Spotify ak Yandex.Music. Men, sa ki tris la se ke yo pa travay nan peyi mwen an. Apre sa, mwen ta renmen koute yo atravè reseptè entènèt la.

Mwen te sonje anfans mwen. Mwen te gen yon kasèt ak de douzèn kasèt. Mwen fè echanj kasèt ak zanmi yo. Epi li te bèl bagay. Mwen deside ke mwen te bezwen difize achiv odyo mwen sèlman nan yon reseptè entènèt. Natirèlman, gen yon opsyon konekte yon jwè odyo oswa iPod nan moun kap pale yo epi yo pa enkyete. Men, sa a se pa fason nou! Mwen rayi konekte konektè)

Mwen te kòmanse chèche solisyon pare yo. Gen yon òf sou mache a pou kreye pwòp radyo entènèt ou soti nan Radio-Tochka.com. Mwen teste li pou 5 jou. Tout bagay te travay byen ak reseptè entènèt mwen an. Men, pri a pa t 'attrayant pou mwen. Mwen te refize opsyon sa a.

Mwen te peye hosting 10 GB. Mwen deside ekri yon script sou yon bagay ki ta kouran odyo fichye mp3 mwen yo. Mwen deside ekri li nan PHP. Mwen byen vit te ekri li epi mwen te lanse li. Tout bagay te travay. Li te fre! Men, yon koup de jou apre mwen te resevwa yon lèt nan men administrasyon hosting la. Li te di ke limit la nan minit processeur te depase ak bezwen nan ajou nan yon tarif ki pi wo. Script la te dwe efase ak opsyon sa a abandone.

Ki jan sa te rive? Mwen pa ka viv san radyo. Si yo pa pèmèt ou kouri script la sou hosting yon lòt moun, Lè sa a, ou bezwen sèvè pwòp ou a. Kote mwen pral fè sa nanm mwen vle.

Mwen gen yon netbook ansyen san batri (CPU - 900 MHz, RAM - 512 Mb). Granmoun nan gen 11 zan deja. Apwopriye pou yon sèvè. Mwen enstale Ubuntu 12.04. Lè sa a, mwen enstale Apache2 ak php 5.3, Samba. Sèvè mwen an pare.

Mwen deside eseye Icecast. Mwen li anpil mana sou li. Men, mwen te jwenn li difisil. Apre sa, mwen deside retounen nan opsyon a ak yon script PHP. Yon koup de jou yo te pase debogaj script sa a. Ak tout bagay te travay gwo. Lè sa a, mwen te ekri tou yon script pou jwe podcasts. Apre sa, mwen te renmen li anpil ke mwen deside fè yon ti pwojè. Yo rele li IWScast. Afiche sou github.

Pwòp radyo entènèt ou

Tout bagay trè senp. Mwen kopye fichye mp3 yo ak fichye index.php la nan katab rasin Apache /var/www/ epi yo jwe yo owaza. Apeprè 300 chante yo ase pou apeprè tout jounen an.
Fichye a index.php se script nan tèt li. Script la li tout non yo nan dosye MP3 nan yon anyè nan yon etalaj. Kreye yon kouran odyo ak ranplase non yo nan dosye MP3. Gen kèk fwa lè ou koute yon chante epi ou renmen li. Kiyès ou panse ap chante? Pou yon ka konsa, gen yon anrejistreman nan non tracks yo koute nan log log.txt la.
Ranpli kòd script

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

Si ou bezwen tras yo dwe jwe nan lòd, Lè sa a, ou bezwen fè kòmantè sou liy lan nan index.php

shuffle($files); //Random on

Pou podcasts mwen itilize /var/www/podcast/ Gen yon lòt script index.php. Li gen memorizasyon tras podcast. Pwochenn fwa ou limen reseptè Entènèt la, yo jwe pwochen track podcast la. Genyen tou yon boutèy demi lit nan jwe tracks.
Nan dosye counter.dat la, ou ka presize nimewo tras la ak lèktur podcast ap kòmanse nan li.

Ekri analizeur pou telechaje otomatik podcasts. Li pran dènye 4 tren yo soti nan RSS ak telechaje yo. Tout bagay sa yo ap travay byen sou yon smartphone, IPTV bwat set-top, oswa nan yon navigatè.

Lòt maten an, li te rive m 'ke li ta bon sonje pozisyon nan lèktur sou yon track. Men, mwen poko konnen ki jan fè sa nan PHP.

Ou ka telechaje script la github.com/iwsys/IWScast

Sous: www.habr.com

Add nouvo kòmantè