Radioja juaj në internet

Shumë prej nesh pëlqejnë të dëgjojnë radio në mëngjes. Dhe pastaj një mëngjes të bukur kuptova se nuk doja të dëgjoja stacionet lokale të radios FM. Jo i interesuar. Por zakoni doli të ishte i dëmshëm. Dhe vendosa të zëvendësoj marrësin FM me një marrës interneti. Bleva shpejt pjesë në Aliexpress dhe mblodha një marrës interneti.

Rreth marrësit të internetit. Zemra e marrësit është mikrokontrolluesi ESP32. Firmware nga KA-radio. Pjesët më kushtojnë 12 dollarë. Lehtësia e montimit më lejoi ta montoja brenda disa ditësh. Punon mirë dhe në mënyrë të qëndrueshme. Në 10 muaj punë, ajo ngriu vetëm disa herë, dhe më pas vetëm për shkak të eksperimenteve të mia. Një ndërfaqe e përshtatshme dhe e menduar mirë ju lejon të kontrolloni nga një smartphone dhe kompjuter. Me një fjalë, ky është një marrës i mrekullueshëm në internet.

Gjithçka është në rregull. Por një mëngjes herët arrita në përfundimin se pavarësisht se kisha akses në dhjetëra mijëra stacione radio, nuk kishte stacione interesante. U mërzita nga reklamat dhe batutat budallaqe të prezantuesve. Duke kërcyer vazhdimisht nga një stacion në tjetrin. Më pëlqen Spotify dhe Yandex.Music. Por gjëja e trishtueshme është se ata nuk punojnë në vendin tim. Dhe unë do të doja t'i dëgjoja ato përmes marrësit të Internetit.

M'u kujtua fëmijëria. Kisha një magnetofon dhe dy duzina kaseta. Kam shkëmbyer kaseta me miqtë. Dhe ishte e mrekullueshme. Vendosa që më duhej të transmetoja arkivat e mia audio vetëm në një marrës interneti. Sigurisht, ekziston një mundësi për të lidhur një audio player ose iPod me altoparlantët dhe të mos shqetësoheni. Por kjo nuk është rruga jonë! Unë e urrej lidhjen e lidhësve)

Fillova të kërkoja zgjidhje të gatshme. Ekziston një ofertë në treg për të krijuar radion tuaj në internet nga Radio-Tochka.com. E kam testuar per 5 dite. Gjithçka funksionoi mirë me marrësin tim të internetit. Por çmimi nuk ishte tërheqës për mua. Unë e refuzova këtë opsion.

Kam paguar hosting 10 GB. Vendosa të shkruaj një skenar për diçka që do të transmetonte transmetimin audio të skedarëve të mi mp3. Vendosa ta shkruaj në PHP. E shkrova shpejt dhe e nisa. Gjithçka funksionoi. Ishte e lezetshme! Por disa ditë më vonë mora një letër nga administrata pritës. Ai tha se kufiri i minutave të procesorit ishte tejkaluar dhe nevoja për të përmirësuar në një tarifë më të lartë. Skripti duhej të fshihej dhe ky opsion u braktis.

Si ndodhi? Nuk mund të jetoj pa radio. Nëse ata nuk ju lejojnë të ekzekutoni skriptin në hostin e dikujt tjetër, atëherë keni nevojë për serverin tuaj. Aty ku do të bëj atë që do shpirti im.

Unë kam një netbook të lashtë pa bateri (CPU - 900 MHz, RAM - 512 Mb). Plaku tashmë është 11 vjeç. I përshtatshëm për një server. Unë instaloj Ubuntu 12.04. Pastaj instaloj Apache2 dhe php 5.3, samba. Serveri im është gati.

Vendosa të provoj Icecast. Kam lexuar shumë mana mbi të. Por e pata të vështirë. Dhe vendosa të kthehem te opsioni me një skript PHP. U shpenzuan disa ditë për korrigjimin e këtij skenari. Dhe gjithçka funksionoi shkëlqyeshëm. Pastaj shkrova edhe një skenar për të luajtur podkaste. Dhe më pëlqeu aq shumë sa vendosa të bëj një projekt të vogël. E quajti atë IWScast. Postuar në github.

Radioja juaj në internet

Gjithçka është shumë e thjeshtë. I kopjoj skedarët mp3 dhe skedarin index.php në dosjen rrënjë Apache /var/www/ dhe ato luhen në mënyrë të rastësishme. Rreth 300 këngë janë të mjaftueshme për afërsisht të gjithë ditën.
Skedari index.php është vetë skripti. Skripti lexon të gjithë emrat e skedarëve MP3 në një direktori në një grup. Krijon një transmetim audio dhe zëvendëson emrat e skedarëve MP3. Ka raste kur dëgjon një këngë dhe të pëlqen. Kush mendoni se po këndon? Për një rast të tillë, ekziston një regjistrim i emrave të këngëve të dëgjuara në regjistrin 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 < 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);
}
?>

Nëse keni nevojë që këngët të luhen sipas radhës, atëherë duhet të komentoni rreshtin në index.php

shuffle($files); //Random on

Për podkastet përdor /var/www/podcast/ Ekziston një tjetër skript index.php. Ka memorizimin e këngëve të podkastit. Herën tjetër që të ndizni marrësin e internetit, luhet pjesa tjetër e podkastit. Ekziston gjithashtu një regjistër i këngëve të luajtura.
Në skedarin counter.dat, mund të specifikoni numrin e pjesës dhe riprodhimi i podkastit do të fillojë prej tij.

Shkroi analizues për shkarkimin automatik të podkasteve. Ai merr 4 këngët më të fundit nga RSS dhe i shkarkon ato. E gjithë kjo funksionon shkëlqyeshëm në një smartphone, pajisje IPTV ose në një shfletues.

Një mëngjes tjetër më shkoi mendja se do të ishte mirë të kujtoja pozicionin e riprodhimit në një këngë. Por unë nuk e di ende se si ta bëj këtë në PHP.

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

Burimi: www.habr.com

Shto një koment