Ваш сопствени интернет радио

Многи од нас воле да слушају радио ујутру. А онда сам једног лепог јутра схватио да не желим да слушам локалне ФМ радио станице. Незаинтересован. Али навика се показала штетном. И одлучио сам да заменим ФМ пријемник са Интернет пријемником. Брзо сам купио делове на Алиекпресс-у и саставио интернет пријемник.

О Интернет пријемнику. Срце пријемника је микроконтролер ЕСП32. Фирмвер са КА-радио. Делови су ме коштали 12 долара. Лакоћа монтаже ми је омогућила да га саставим за неколико дана. Ради добро и стабилно. За 10 месеци рада смрзло се само пар пута, и то само због мојих експеримената. Погодан и добро осмишљен интерфејс омогућава вам контролу са паметног телефона и рачунара. Једном речју, ово је диван Интернет пријемник.

Све је у реду. Али једног раног јутра дошао сам до закључка да упркос томе што сам имао приступ десетинама хиљада радио станица, није било занимљивих станица. Нервирала ме реклама и глупе шале водитеља. Стално скакање са једне станице на другу. Свиђају ми се Спотифи и Иандек.Мусиц. Али тужна ствар је што они не раде у мојој земљи. И волео бих да их слушам преко интернет пријемника.

Сетио сам се детињства. Имао сам касетофон и два туцета касета. Разменио сам касете са пријатељима. И било је дивно. Одлучио сам да морам да стримујем своје аудио архиве само на Интернет пријемник. Наравно, постоји опција да повежете аудио плејер или иПод на звучнике и не брините. Али ово није наш начин! Мрзим конекторе за повезивање)

Почео сам да тражим готова решења. На тржишту постоји понуда за креирање сопственог интернет радија са Радио-Тоцхка.цом. Тестирао сам га 5 дана. Све је функционисало у реду са мојим интернет пријемником. Али цена ми није била привлачна. Одбио сам ову опцију.

Платио сам хостинг 10 ГБ. Одлучио сам да напишем скрипту на нечему што ће емитовати аудио ток мојих мп3 датотека. Одлучио сам да то напишем у ПХП-у. Брзо сам то написао и покренуо. Све је функционисало. Било је супер! Али неколико дана касније добио сам писмо од администрације домаћина. Речено је да је прекорачена граница процесорских минута и потреба за надоградњом на вишу тарифу. Скрипта је морала бити обрисана и ова опција напуштена.

Како се то догодило? Не могу да живим без радија. Ако вам не дозвољавају да покренете скрипту на туђем хостингу, онда вам је потребан сопствени сервер. Где ћу учинити шта ми душа жели.

Имам старински нетбоок без батерије (ЦПУ - 900 МХз, РАМ - 512 Мб). Старац има већ 11 година. Погодно за сервер. Инсталирам Убунту 12.04. Затим инсталирам Апацхе2 и пхп 5.3, самба. Мој сервер је спреман.

Одлучио сам да испробам Ицецаст. Прочитао сам доста мана о томе. Али било ми је тешко. И одлучио сам да се вратим на опцију са ПХП скриптом. Неколико дана је потрошено на отклањање грешака у овој скрипти. И све је функционисало одлично. Затим сам написао и сценарио за пуштање подкаста. И толико ми се допало да сам одлучио да урадим мали пројекат. Звао се ИВСцаст. Објављено на гитхуб-у.

Ваш сопствени интернет радио

Све је врло једноставно. Копирам мп3 датотеке и датотеку индек.пхп у Апацхе роот фолдер /вар/ввв/ и они се насумично репродукују. Око 300 песама је довољно за отприлике цео дан.
Датотека индек.пхп је сама скрипта. Скрипта чита сва имена МП3 датотека у директоријуму у низ. Креира аудио ток и замењује имена МП3 датотека. Има тренутака када слушате песму и свиђа вам се. Шта мислите ко пева? За такав случај постоји запис назива слушаних нумера у лог лог.ткт
Комплетан код скрипте

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

Ако желите да се нумере репродукују по реду, онда морате да коментаришете ред у индек.пхп

shuffle($files); //Random on

За подкасте користим /вар/ввв/подцаст/ Постоји још једна скрипта индек.пхп. Има меморисање подцаст нумера. Следећи пут када укључите Интернет пријемник, репродукује се следећа подцаст нумера. Ту је и дневник репродукованих нумера.
У датотеци цоунтер.дат можете одредити број нумере и репродукција подкаста ће почети од ње.

Написао парсере за аутоматско преузимање подцаста. Узима најновије 4 песме са РСС-а и преузима их. Све ово одлично функционише на паметном телефону, ИПТВ сет-топ бок-у или у претраживачу.

Пре неко јутро ми је пало на памет да би било сјајно запамтити позицију репродукције на стази. Али још увек не знам како то да урадим у ПХП-у.

Скрипта се може преузети гитхуб.цом/ивсис/ИВСцаст

Извор: ввв.хабр.цом

Додај коментар