Þitt eigið netútvarp

Mörgum okkar finnst gaman að hlusta á útvarp á morgnana. Og svo einn góðan veðurdag áttaði ég mig á því að ég vildi ekki hlusta á staðbundnar FM útvarpsstöðvar. Ekki áhuga. En ávaninn reyndist skaðlegur. Og ég ákvað að skipta út FM móttakara fyrir netmóttakara. Ég keypti fljótt varahluti á Aliexpress og setti saman netmóttakara.

Um netmóttakara. Hjarta móttakarans er ESP32 örstýringin. Firmware frá KA-útvarpi. Hlutirnir kostuðu mig $12. Auðveld samsetningin gerði mér kleift að setja það saman á nokkrum dögum. Virkar vel og stöðugt. Í 10 mánaða vinnu fraus það aðeins nokkrum sinnum og þá bara vegna tilrauna minna. Þægilegt og úthugsað viðmót gerir þér kleift að stjórna úr snjallsíma og tölvu. Í einu orði sagt, þetta er dásamlegur netmóttakari.

Allt í lagi. En snemma morguns komst ég að þeirri niðurstöðu að þrátt fyrir að hafa aðgang að tugþúsundum útvarpsstöðva væru engar áhugaverðar stöðvar. Ég var pirruð yfir auglýsingum og heimskulegum brandara kynnanna. Stöðugt hoppað frá einni stöð til annarrar. Mér líkar við Spotify og Yandex.Music. En það sorglega er að þeir virka ekki í mínu landi. Og ég myndi vilja hlusta á þá í gegnum netmóttakara.

Ég minntist æsku minnar. Ég átti upptökutæki og tvo tugi snælda. Ég skipti á snældum við vini. Og það var dásamlegt. Ég ákvað að ég þyrfti að streyma hljóðskjalasafninu mínu aðeins í netmóttakara. Auðvitað er möguleiki á að tengja hljóðspilara eða iPod við hátalarana og ekki hafa áhyggjur. En þetta er ekki okkar leið! Ég hata að tengja tengi)

Ég fór að leita að tilbúnum lausnum. Það er tilboð á markaðnum um að búa til þitt eigið netútvarp frá Radio-Tochka.com. Ég prófaði það í 5 daga. Allt virkaði vel með netmóttakaranum mínum. En verðið var ekki aðlaðandi fyrir mig. Ég hafnaði þessum valkosti.

Ég hef borgað hýsingu 10 GB. Ég ákvað að skrifa handrit að einhverju sem myndi streyma hljóðstraumnum af mp3 skránum mínum. Ég ákvað að skrifa það í PHP. Ég skrifaði það fljótt og setti það af stað. Allt virkaði. Það var flott! En nokkrum dögum síðar fékk ég bréf frá hýsingarstjórninni. Þar sagði að farið væri yfir mörk örgjörvamínúta og þörf á að uppfæra í hærri gjaldskrá. Eyða þurfti handritinu og hætta við þennan valmöguleika.

Hvernig gerðist það? Ég get ekki lifað án útvarps. Ef þeir leyfa þér ekki að keyra handritið á hýsingu einhvers annars, þá þarftu þinn eigin netþjón. Þar sem ég mun gera það sem sál mín þráir.

Ég á eldgamla netbók án rafhlöðu (CPU - 900 MHz, vinnsluminni - 512 Mb). Gamli maðurinn er þegar orðinn 11 ára. Hentar fyrir netþjón. Ég set upp Ubuntu 12.04. Svo set ég upp Apache2 og php 5.3, samba. Miðlarinn minn er tilbúinn.

Ég ákvað að prófa Icecast. Ég las mikið mana um það. En mér fannst það erfitt. Og ég ákvað að fara aftur í valkostinn með PHP handriti. Nokkrir dagar fóru í að kemba þetta handrit. Og allt virkaði frábærlega. Svo skrifaði ég líka handrit til að spila podcast. Og mér líkaði það svo vel að ég ákvað að gera lítið verkefni. Kallaði það IWScast. Sent á github.

Þitt eigið netútvarp

Allt er mjög einfalt. Ég afrita mp3 skrárnar og index.php skrána inn í Apache rótarmöppuna /var/www/ og þær eru spilaðar af handahófi. Um 300 lög duga fyrir um það bil allan daginn.
index.php skráin er handritið sjálft. Handritið les öll nöfn MP3 skráa í möppu í fylki. Býr til hljóðstraum og kemur í staðinn fyrir nöfn MP3 skráa. Það eru tímar þegar þú hlustar á lag og þér líkar það. Hver heldurðu að sé að syngja? Fyrir slíkt tilvik er til skráning á nöfnum hlustaðra laga í log log.txt
Heill skriftarkóða

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

Ef þú þarft að spila lögin í röð, þá þarftu að kommenta út línuna í index.php

shuffle($files); //Random on

Fyrir podcast nota ég /var/www/podcast/ Það er annað handrit index.php. Það hefur podcast lag á minnið. Næst þegar þú kveikir á netmóttakara er næsta podcast lag spilað. Það er líka skrá yfir spiluð lög.
Í counter.dat skránni geturðu tilgreint lagnúmerið og hlaðvarpsspilun hefst frá því.

Skrifaði þáttara fyrir sjálfvirkt niðurhal á hlaðvörpum. Það tekur nýjustu 4 lögin frá RSS og halar þeim niður. Allt þetta virkar frábærlega í snjallsíma, IPTV set-top box eða í vafra.

Um morguninn datt mér í hug að það væri frábært að muna eftir spilunarstöðu á braut. En ég veit ekki ennþá hvernig á að gera þetta í PHP.

Handritið er hægt að hlaða niður github.com/iwsys/IWScast

Heimild: www.habr.com

Bæta við athugasemd