Imong kaugalingong internet radio

Daghan kanato ganahan maminaw sa radyo sa buntag. Ug unya usa ka maayong buntag akong naamgohan nga dili ko gustong maminaw sa lokal nga mga estasyon sa radyo sa FM. Dili interesado. Apan ang bisyo nahimong makadaot. Ug nakahukom ko nga ilisan ang FM receiver og Internet receiver. Dali kong mipalit ug mga piyesa sa Aliexpress ug nagtigom ug Internet receiver.

Mahitungod sa tigdawat sa Internet. Ang kasingkasing sa tigdawat mao ang ESP32 microcontroller. Firmware gikan sa KA-radio. Ang mga piyesa nagkantidad kanako og $12. Ang kasayon ​​sa asembliya nagtugot kanako sa pag-assemble niini sulod sa pipila ka adlaw. Nagtrabaho nga maayo ug lig-on. Sa 10 ka bulan nga pagtrabaho, kini nagyelo sa pipila ka mga higayon, ug pagkahuman tungod sa akong mga eksperimento. Ang usa ka kombenyente ug maayo nga gihunahuna nga interface nagtugot kanimo sa pagkontrol gikan sa usa ka smartphone ug kompyuter. Sa usa ka pulong, kini usa ka talagsaon nga tigdawat sa Internet.

OK ra ang tanan. Apan usa ka sayo sa buntag nakahinapos ako nga bisan pa adunay access sa napulo ka libo nga mga estasyon sa radyo, wala’y makapaikag nga mga istasyon. Naglagot ko sa advertising ug sa mga binuang nga komedya sa mga presenter. Kanunay nga paglukso gikan sa usa ka estasyon ngadto sa lain. Ganahan ko sa Spotify ug Yandex.Music. Apan ang makapasubo mao nga wala sila magtrabaho sa akong nasud. Ug gusto ko nga maminaw kanila pinaagi sa Internet receiver.

Nahinumdom ko sa akong pagkabata. Duna koy tape recorder ug duha ka dosena nga cassette. Nag-ilis kog mga cassette sa mga higala. Ug kini talagsaon. Nakahukom ko nga kinahanglan nako nga i-stream ang akong mga audio archive lamang sa usa ka tigdawat sa Internet. Siyempre, adunay usa ka kapilian sa pagkonektar sa usa ka audio player o iPod sa mga mamumulong ug dili mabalaka. Apan dili kini ang atong paagi! Gidumtan ko ang pagkonektar sa mga konektor)

Nagsugod ako sa pagpangita alang sa andam nga mga solusyon. Adunay usa ka tanyag sa merkado sa paghimo sa imong kaugalingon nga radyo sa Internet gikan sa Radio-Tochka.com. Gisulayan nako kini sulod sa 5 ka adlaw. Ang tanan nagtrabaho og maayo sa akong internet receiver. Apan ang presyo dili madanihon alang kanako. Gibalibaran nako kini nga kapilian.

Gibayran nako ang hosting nga 10 GB. Nakahukom ko nga magsulat og script sa usa ka butang nga mag-stream sa audio stream sa akong mga mp3 file. Nakahukom ko nga isulat kini sa PHP. Gisulat dayon nako kini ug gilusad. Ang tanan nagtrabaho. Nindot kadto! Apan paglabay sa pipila ka adlaw nakadawat ko og sulat gikan sa hosting administration. Kini nag-ingon nga ang limitasyon sa mga minuto sa processor milapas ug ang panginahanglan sa pag-upgrade sa usa ka mas taas nga taripa. Kinahanglang tangtangon ang script ug biyaan kini nga opsyon.

Giunsa kini nahitabo? Dili ko mabuhi kung wala ang radyo. Kung dili ka nila tugutan nga ipadagan ang script sa pag-host sa uban, kinahanglan nimo ang imong kaugalingon nga server. Diin buhaton ko ang gusto sa akong kalag.

Duna koy karaang netbook nga walay baterya (CPU - 900 MHz, RAM - 512 Mb). Ang tigulang 11 anyos na. Angayan alang sa usa ka server. Gi-install nako ang Ubuntu 12.04. Dayon akong gi-install ang Apache2 ug php 5.3, samba. Andam na ang akong server.

Nakahukom ko nga sulayan ang Icecast. Daghan kog nabasa nga mana niini. Pero naglisod ko. Ug nakahukom ko nga mobalik sa opsyon gamit ang PHP script. Pipila ka adlaw ang gigugol sa pag-debug niini nga script. Ug ang tanan nagtrabaho nga maayo. Unya nagsulat usab ako usa ka script aron magdula mga podcast. Ug ganahan kaayo ko niini mao nga nakahukom ko nga mobuhat ug gamay nga proyekto. Gitawag kini nga IWScast. Gi-post sa github.

Imong kaugalingong internet radio

Ang tanan yano ra kaayo. Akong gikopya ang mga mp3 file ug ang index.php file ngadto sa Apache root folder /var/www/ ug sila gidula nga random. Mga 300 ka kanta igo na sa halos tibuok adlaw.
Ang index.php file mao ang script mismo. Gibasa sa script ang tanan nga mga ngalan sa mga file sa MP3 sa usa ka direktoryo sa usa ka laray. Naghimo usa ka audio stream ug gipuli ang mga ngalan sa mga MP3 file. Naay mga panahon nga maminaw ka ug kanta ug ganahan ka. Kinsa sa imong hunahuna ang nagkanta? Alang sa ingon nga kaso, adunay usa ka pagrekord sa mga ngalan sa nadungog nga mga track sa log log.txt
Kompleto nga script code

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

Kung kinahanglan nimo ang mga track nga ipatugtog sa han-ay, nan kinahanglan nimo nga magkomento sa linya sa index.php

shuffle($files); //Random on

Para sa mga podcast akong gigamit /var/www/podcast/ Adunay laing script nga index.php. Kini adunay podcast track memorization. Sa sunod higayon nga imong i-on ang Internet receiver, ang sunod nga podcast track ipatugtog. Adunay usab usa ka log sa gipatugtog nga mga track.
Sa counter.dat file, mahimo nimong ipiho ang numero sa track ug ang playback sa podcast magsugod gikan niini.

Nagsulat og mga parser para sa awtomatikong pag-download sa mga podcast. Gikinahanglan ang pinakabag-o nga 4 nga mga track gikan sa RSS ug gi-download kini. Kining tanan maayo kaayo sa usa ka smartphone, IPTV set-top box, o sa usa ka browser.

Sa miaging buntag nahunahuna nako nga maayo nga hinumdoman ang posisyon sa playback sa usa ka track. Apan wala pa ko kahibalo kung unsaon pagbuhat niini sa PHP.

Ang script mahimong ma-download github.com/iwsys/IWScast

Source: www.habr.com

Idugang sa usa ka comment