Ձեր սեփական ինտերնետային ռադիոն

Մեզանից շատերը սիրում են առավոտյան ռադիո լսել: Եվ հետո մի գեղեցիկ առավոտ ես հասկացա, որ չեմ ուզում լսել տեղական FM ռադիոկայանները: Չի հետաքրքրում. Բայց սովորությունը վնասակար է ստացվել։ Եվ ես որոշեցի փոխարինել FM ընդունիչը ինտերնետ ընդունիչով: Ես արագ գնեցի մասեր Aliexpress-ից և հավաքեցի ինտերնետ ընդունիչ:

Ինտերնետ ընդունիչի մասին. Ստացողի սիրտը ESP32 միկրոկառավարիչն է: Որոնվածը KA-radio-ից: Պահեստամասերն ինձ արժեցան 12 դոլար։ Հավաքման հեշտությունը թույլ տվեց մի քանի օրում հավաքել այն։ Աշխատում է լավ և կայուն: 10 ամսվա աշխատանքի ընթացքում ընդամենը մի երկու անգամ սառեց, հետո միայն իմ փորձերի պատճառով։ Հարմար և լավ մտածված ինտերֆեյսը թույլ է տալիս կառավարել սմարթֆոնից և համակարգչից: Մի խոսքով, սա հրաշալի ինտերնետ ընդունիչ է։

Ամեն ինչ կարգին է: Բայց մի վաղ առավոտ ես եկա այն եզրակացության, որ չնայած տասնյակ հազարավոր ռադիոկայանների մուտքին, հետաքրքիր կայաններ չկային: Ինձ զայրացրել են գովազդը և հաղորդավարների հիմար կատակները. Անընդհատ նետվելով մի կայարանից մյուսը: Ինձ դուր է գալիս Spotify-ը և Yandex.Music-ը: Բայց ցավալին այն է, որ նրանք չեն աշխատում իմ երկրում։ Եվ ես կցանկանայի նրանց լսել ինտերնետ ընդունիչի միջոցով:

Ես հիշեցի իմ մանկությունը. Ես ունեի ձայնագրիչ և երկու տասնյակ ձայներիզներ։ Ընկերների հետ ձայներիզներ փոխանակեցի։ Եվ դա հրաշալի էր։ Ես որոշեցի, որ պետք է իմ աուդիո արխիվները փոխանցեմ միայն ինտերնետ ընդունիչին: Իհարկե, կա աուդիո նվագարկիչ կամ iPod բարձրախոսներին միացնելու և չանհանգստանալու տարբերակ: Բայց սա մեր ճանապարհը չէ։ Ես ատում եմ միացնող միակցիչները)

Սկսեցի պատրաստի լուծումներ փնտրել։ Շուկայում առաջարկ կա Radio-Tochka.com-ից ստեղծել ձեր սեփական ինտերնետային ռադիոն: Ես փորձարկեցի այն 5 օր: Ամեն ինչ լավ էր աշխատում իմ ինտերնետ ընդունիչի հետ: Բայց գինը ինձ համար գրավիչ չէր։ Ես մերժեցի այս տարբերակը։

Ես վճարել եմ հոսթինգ 10 ԳԲ: Ես որոշեցի սցենար գրել մի բանի վրա, որը կհեռարձակի իմ mp3 ֆայլերի աուդիո հոսքը: Որոշեցի գրել PHP-ով։ Ես արագ գրեցի այն և գործարկեցի այն: Ամեն ինչ աշխատեց։ Դա թույն էր! Բայց մի երկու օր անց ես նամակ ստացա հոսթինգի ադմինիստրացիայից։ Այնտեղ ասվում էր, որ գերազանցվել է պրոցեսորային րոպեների սահմանաչափը և ավելի բարձր սակագնի բարձրացման անհրաժեշտություն։ Սցենարը պետք է ջնջվեր, և այս տարբերակը լքվեր:

Ինչպե՞ս դա տեղի ունեցավ: Ես չեմ կարող ապրել առանց ռադիոյի: Եթե ​​նրանք թույլ չեն տալիս ձեզ գործարկել սցենարը ուրիշի հոստինգում, ապա ձեզ հարկավոր է ձեր սեփական սերվերը. Որտեղ ես անելու եմ այն, ինչ հոգիս է կամենում:

Ես ունեմ հինավուրց նեթբուք առանց մարտկոցի (CPU - 900 MHz, RAM - 512 Mb): Ծերունին արդեն 11 տարեկան է։ Հարմար է սերվերի համար: Ես տեղադրում եմ Ubuntu 12.04: Հետո տեղադրում եմ Apache2 ու php 5.3, samba: Իմ սերվերը պատրաստ է:

Ես որոշեցի փորձել Icecast-ը: Ես շատ մանա կարդացի դրա վրա: Բայց ինձ համար դժվար էր: Եվ ես որոշեցի վերադառնալ PHP սցենարով տարբերակին։ Մի քանի օր ծախսվեց այս սցենարի վրիպազերծման վրա: Եվ ամեն ինչ հիանալի աշխատեց: Հետո ես գրեցի նաև փոդքասթներ նվագելու սցենար: Եվ դա ինձ այնքան դուր եկավ, որ որոշեցի մի փոքրիկ նախագիծ անել։ Այն անվանել է IWScast: Տեղադրված է github-ում.

Ձեր սեփական ինտերնետային ռադիոն

Ամեն ինչ շատ պարզ է. Ես պատճենում եմ mp3 ֆայլերը և index.php ֆայլը Apache-ի արմատային թղթապանակում /var/www/ և դրանք նվագարկվում են պատահականորեն: Մոտ 300 երգը բավական է մոտավորապես ամբողջ օրվա համար։
index.php ֆայլն ինքնին սցենարն է: Սցենարը կարդում է MP3 ֆայլերի բոլոր անունները գրացուցակի մեջ զանգվածի մեջ: Ստեղծում է աուդիո հոսք և փոխարինում MP3 ֆայլերի անունները: Լինում են դեպքեր, երբ երգ ես լսում ու քեզ դուր է գալիս։ Ձեր կարծիքով ո՞վ է երգում: Նման դեպքի համար log.txt log.txt-ում կա լսված հետքերի անունների ձայնագրություն։
Ամբողջական սցենարի կոդը

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

Եթե ​​Ձեզ անհրաժեշտ է, որ հետքերը նվագարկվեն հերթականությամբ, ապա դուք պետք է մեկնաբանեք տողը index.php-ում

shuffle($files); //Random on

Փոդքաստների համար ես օգտագործում եմ /var/www/podcast/ Կա ևս մեկ սցենար index.php: Այն ունի փոդքասթի հետքերի անգիր: Հաջորդ անգամ, երբ միացնեք ինտերնետ ընդունիչը, կցուցադրվի հաջորդ փոդքասթի կատարումը: Կա նաև նվագարկված հետքերի մատյան:
Counter.dat ֆայլում կարող եք նշել ուղու համարը, և փոդքասթի նվագարկումը կսկսվի դրանից:

Գրել է վերլուծիչներ՝ փոդքասթերի ավտոմատ ներբեռնման համար: Այն վերցնում է վերջին 4 հետքերը RSS-ից և ներբեռնում դրանք: Այս ամենը հիանալի է աշխատում սմարթֆոնի, IPTV սարքի կամ բրաուզերի վրա:

Մյուս առավոտ մտքովս անցավ, որ լավ կլիներ հիշել երգի նվագարկման դիրքը: Բայց ես դեռ չգիտեմ, թե ինչպես դա անել PHP-ում:

Սցենարը կարելի է ներբեռնել github.com/iwsys/IWScast

Source: www.habr.com

Добавить комментарий