Radio juaj interneti

Shumë prej nesh e pëlqejnë të dëgjojnë radio në mëngjes. Dhe një mëngjes të bukur, e kuptova se nuk doja të dëgjoja stacionet lokale FM. S’kishte interes. Por zakoni rezultoi i dëmshëm. Prandaj vendosa të zëvendësoj radio FM me një prapavanë interneti. Shpejt bleva pjesët në AliExpress dhe e ndërtova prapavanin e internetit.

Për prapavanin e internetit. Zemra e prapavanit është mikroprocesori ESP32. Firmware nga KA-radio. Kostot e pjesëve më dolën 12 dollarë. Thjeshtësia e ndërtimit më lejuar ta përfundoj atë brenda disa ditësh. Punon mirë dhe stabilisht. Gjatë 10 muajve të punës, ka ngecur vetëm disa herë dhe vetëm për shkak të eksperimenteve të mia. Një ndërfaqe e rehatshme dhe e menduar mirë lejon menaxhimin nga telefoni dhe kompjuteri. Me një fjalë, është një prapavanë interneti e shkëlqyer.

Të gjithë është fantastik. Por një mëngjes të hershëm arrita në përfundimin se me qasje në dhjetëra mijëra stacione radio, nuk ka stacione interesante. Më irritonin reklamat, shakatë e padobishme të prezantuesve. Vazhdimisht kaloja nga një stacion në otro. Më pëlqen Spotify dhe Yandex.Muzika. Por pikëllimi është se nuk funksionojnë në vendin tim. Do të doja t'i dëgjoja ato përmes prapavanit të internetit.

Më kujtohet fëmijëria ime. Kisha një magnetofon dhe dy dhjetëra kaseta. I këmbenim kasetat me shokët. Ishte e mrekullueshme. Vendosa të bëj transmetim të arkivave të mia audio vetëm në një marrës interneti. Sigurisht, ka një opsion për të lidhur një pjestar audio ose iPod në altoparlantë dhe për të mos u shqetësuar. Por kjo nuk është rruga jonë! E urrej të lidha kabujt)

Fillova të kërkoj zgjidhje të gatshme. Në treg ka një ofertë për të krijuar radio-internet të tonën nga Radio-Tochka.com. E testova për 5 ditë. Me marrësin tim interneti, gjithçka funksionoi shkëlqyer. Por çmimi doli të ishte tërheqës për mua. Refuzova këtë opsion.

Kam një hostim të paguar 10 GB. Vendosa të shkruaj një skript në diçka, që të bëj transmetimin e rrjedhës audio të skedarëve të mi mp3. Vendosa ta shkruaj në PHP. E shkrova shpejt dhe e aktivizova. Gjithçka funksionoi. Ishte fantastike! Por pas disa ditësh, mora një letër nga administrata e hostimit. Në të thuhej për tejkalimin e kufirit të minutave të procesorit dhe nevojën për të kaluar në një tarifë më të lartë. Skripti u detyrua të fshihej dhe refuzova këtë opsion.

Si si kështu? Nuk mund të jetoj pa radio. Nëse nuk më lejojnë të ekzekutoj skriptin në një host të huaj, atëherë duhet të kem serverin tim. Ku do të bëj atë që dëshiron shpirti im.

Kam një netbook të vjetër që qëndron pa bateri (CPU - 900 MHz, RAM - 512 Mb). Ky plaku ka 11 vjet tashmë. Për server do të jetë më thanë mjaft mirë. Po vendos Ubuntu 12.04. Më pas instalohem Apache2 dhe php 5.3, samba. Serveri im është gati.

Vendosa të provoj Icecast. Kam lexuar shumë manuale për të. Por më duket se ishte i komplikuar. Dhe vendosa të kthehem në variantin me skript në PHP. Disa ditë u shpenzuan për të debug-uar këtë skript. Dhe gjithçka funksionoi perfekt. Më pas shkrova një skript për të luajtur podkaste. Më pëlqeu aq shumë sa vendosa të bëj një projekt të vogël. E quajta IWScast. E publikova në github.

Radio juaj interneti

E gjithë kjo është shumë e thjeshtë. Skedat mp3 dhe skeda index.php i kopjoj në folderin kryesor të Apache-s /var/www dhe ato luajnë rastësisht. Rreth 300 këngë mjaftojnë për gjithë ditën përafërsisht.
Skedari index.php është vetë skripti. Skripti lexon të gjitha emrat e skedave mp3 në direktorium në një varg. Krijon një rrjedhë audio dhe vendos emrat e skedave mp3. Ndonjëherë ndodh që dëgjon një këngë dhe të pëlqen. Mendon, kush e këndon këtë? Për këtë rast ekziston një regjistrim i emrave të këngëve të dëgjuara në log.log.txt.
Kodi i skriptit të plotë

<?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: emri juaj");
header("icy-description: përshkrimi juaj"); 
$files = glob("*.mp3");
shuffle($files); 

for ($x=0; $x array(
       'method' =>'GET',
       'header' => 'Icy-MetaData: 1',
       'header' =>"Accept-language: enrn"
       )
     )
   );
//Ruaj në log 
  $fl = $filePath; 
  $log = date('Y-m-d H:i:s') . ' Kënga - ' . $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ë reprodukohen në rend, atëherë duhet të komentoni rreshtin në index.php

shuffle($files); //Random on

Për podkasterët përdor /var/www/podcast/ Atje ka një skript tjetër index.php. Ai ka kujtesë për këngët e podkasteve. Më pas, kur ndizet pranuesi i internetit, luhet kënga e ardhshme e podkastit. Po ashtu, ka një log të këngëve të luajtura.
Në skedarin counter.dat mund të specifikoni numrin e këngës dhe nga ai do të fillojë luajtja e podkasteve.

Kam shkruar parser-a për shkarkimin automatike të podkasteve. Ai merr nga RSS katër këngët e fundit dhe i shkarkon ato. E gjithë kjo funksionon shkëlqyer në smartphone, pajisje IPTV, në shfletues.

Së fundmi, në mëngjes, më erdhi në mendje që do të ishte mrekulli të bëj kujtesën e pozites së luajtjes në këngë. Por nuk di ende si ta bëj këtë në PHP.

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

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster