Radioja jote në internet

Shumë prej nesh e duam të dëgjojmë radio në mëngjes. Dhe një mëngjes të bukur e kuptova se nuk doja të dëgjoja stacionet locale të FM-së. Nuk ishte interesante. Por zakoni u tregua i dëmshëm. Vendosa ta zëvendësoj marrësin FM me një marrës interneti. Shpejt bleva pjesët në AliExpress dhe e assembled internetin.

Rreth marrësit të internetit. Zemra e marrësit është mikrocontrolori ESP32. Firmware nga KA-radio. Kostoja e pjesëve ishte 12 dollarë. Thjeshtësia e assembleimit më lejojë ta përfundoj atë për disa ditë. Punon mirë dhe stabilisht. Për 10 muaj që punon, ka ngrirë vetëm disa herë dhe kjo vetëm për shkak të eksperimenteve të mia. Një ndërfaqe e rehatshme dhe e menduar lejon menaxhimin nga smartphone dhe kompjuter. Një fjalë, ky është një marrës interneti i shkëlqyer.

E gjithë kjo është e shkëlqyer. Por një mëngjes të hershëm arrita në përfundimin se, edhe me akses në dhjetëra mijëra stacionet, nuk kishte stacione interesante. Reklamat dhe shakatë e mërzitshme të moderatorëve më irritonin. Shpesh kaloja nga një stacion në tjetrin. Më pëlqen Spotify dhe Yandex.Muzika. Por trishtimi është se ato nuk funksionojnë në vendin tim. Dhe do të doja t'i dëgjoja ato përmes marrësit internet.

E kujtoj fëmijërinë time. Kisha një kasetofon dhe dy dhjetëra kaseta. Ndryshonim kasetat me shokët. Dhe ishte magjike. Vendosa se duhej të bëja streaming të arkivave të mia audio vetë në marrësin internet. Natyrisht, kishte mundësinë të lidhnim një player audio ose iPod me altoparlantët dhe të mos shqetësohesha. Por kjo nuk është rruga jonë! E urrenj lidhjen e kabllove.)

Fillova të kërkoj zgjidhje të gatshme. Në treg kishte një ofertë për të krijuar radion tuaj internet nga Radio-Tochka.com. E testova për 5 ditë. Me marrësin tim internet, gjithçka punoi shkëlqyeshëm. Por çmimi ishte i papërballueshëm për mua. U ndava nga kjo mundësi.

Kam një hostim të paguar prej 10 GB. Vendosa të shkruaj një skenar në diçka që të ketë streaming të rrjedhës audio të skedarëve të mi mp3. Vendosa të shkruaj në PHP. Shkruajta shpejt dhe e aktivizova. Gjithçka funksionoi. Ishte e shkëlqyer! Por pas disa ditësh, më erdhi një email nga administrata e hostimit. Në të, u shpreh se isha tejkalur limitin e minutave të procesorit dhe se duhej të kaloja në një plan më të lartë. Duhej të fshihja skriptin dhe të heqja dorë nga kjo mundësi.

Si, si! Nuk mund të jetoj pa radio. Nëse nuk lejohet të startoj skriptin në një host të huaj, do të jem nevoja për një server timin. Ku do ta bëj atë që dëshiron shpirti im.

Kam një laptop të vjetër pa bateri (CPU — 900 MHz, RAM — 512 Mb). Vjetari është 11 vjeç. Përshtatet mjaft mirë për server. Po e instaloj Ubuntu 12.04. Më pas instaloj Apache2 dhe php 5.3, samba. Serveri im është gati.

Vendosa të provoj Icecast. Kam lexuar shumë për të. Por më duket i komplikuar. Kështu që vendosa të kthehem tek varianti me skriptin në PHP. Disa ditë shkuan për të rregulluar këtë skript. Dhe gjithçka funksionoi shkëlqyer. Pastaj shkrova edhe një skript për të luajtur podkastet. Më pëlqeu aq shumë sa vendosa të bëj një projekt të vogël. E quajta IWScast. E ngarkova në github.

Radioja jote në internet

Të gjitha janë shumë të thjeshta. Skedarët mp3 dhe skedari index.php i kopjoj në dosjen rrënjë të Apache-s /var/www/ dhe ato luajnë rastësisht. Rreth 300 këngë mjaftojnë për një ditë të tërë.
Skedari index.php është vetë skripti. Skripti lexon të gjitha emrat e skedareve mp3 në një varg. Krijon një rrjedhë audio dhe vendos emrat e skedareve mp3. Ndonjëherë ndihesh duke dëgjuar një këngë që të pëlqen. Mendon, kush e këndon këtë? Për raste të tilla ka një regjistrim të emrave të këngëve të dëgjuara në log log.txt.
Kodi i plotë i skriptit

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

Nëse është e nevojshme që këngët të luajnë në rend, duhet të komenton në index.php rreshtin

shuffle($files); //Random on

Për podkastet përdor /var/www/podcast/. Atje ka një skript tjetër index.php. Në të është ruajtja e këngëve të podkastit. Kur ndizet përsëri marrësi i internetit, luhet kënga tjetër e podkastit. Po ashtu ka një log të këngëve të luajtura.
Në skedarin counter.dat mund të specifikosh numrin e këngës dhe nga aty do të fillojë luajtja e podkashtit.

Kam shkruaj parserët për shkarkimin automatike të podkasteve. Ai merr 4 të fundit nga RSS dhe i shkarkon ato. E gjithë kjo funksionon shkëlqyeshëm në smartphone, pajisje IPTV dhe në shfletues.

Së fundmi në mëngjes më erdhi një ide, se do të ishte e mrekullueshme të bëja ruajtjen e pozicionit të luajtjes në një këngë. Por nuk di ende se si ta bëj këtë në PHP.

Skripti mund të shkarkohet github.com/iwsys/IWScast

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster