Savs interneta radio

Daudziem no mums patīk klausīties radio no rītiem. Un tad kādā jaukā rītā es sapratu, ka nevēlos klausīties vietējās FM radiostacijas. Neesmu ieinteresēts. Taču ieradums izrādījās kaitīgs. Un es nolēmu nomainīt FM uztvērēju pret interneta uztvērēju. Es ātri nopirku detaļas Aliexpress un saliku interneta uztvērēju.

Par interneta uztvērēju. Uztvērēja sirds ir ESP32 mikrokontrolleris. Programmaparatūra no KA-radio. Detaļas man maksāja 12 USD. Salikšanas vienkāršība ļāva to salikt pāris dienu laikā. Strādā labi un stabili. 10 darba mēnešu laikā sasala tikai pāris reizes, un tad tikai manu eksperimentu dēļ. Ērts un pārdomāts interfeiss ļauj vadīt no viedtālruņa un datora. Vārdu sakot, tas ir brīnišķīgs interneta uztvērējs.

Viss kārtībā. Bet kādu agru rītu es nonācu pie secinājuma, ka, neskatoties uz to, ka man ir pieejami desmitiem tūkstošu radiostaciju, nebija nevienas interesantas stacijas. Mani kaitināja reklāma un raidījuma vadītāju stulbie joki. Pastāvīgi lēkā no vienas stacijas uz otru. Man patīk Spotify un Yandex.Music. Bet skumji ir tas, ka viņi nestrādā manā valstī. Un es gribētu tos klausīties caur interneta uztvērēju.

Atcerējos bērnību. Man bija magnetofons un divi desmiti kasešu. Ar draugiem samainījos ar kasetēm. Un tas bija brīnišķīgi. Es nolēmu, ka man ir nepieciešams straumēt savus audio arhīvus tikai uz interneta uztvērēju. Protams, ir iespēja pieslēgt skaļruņiem audio atskaņotāju vai iPod un neuztraukties. Bet tas nav mūsu ceļš! Es ienīstu savienotājus)

Sāku meklēt gatavus risinājumus. Tirgū ir piedāvājums izveidot savu interneta radio no Radio-Tochka.com. Es to pārbaudīju 5 dienas. Ar manu interneta uztvērēju viss darbojās labi. Bet cena man nebija pievilcīga. Es noraidīju šo iespēju.

Esmu maksājis hostingu 10 GB. Es nolēmu uzrakstīt skriptu kaut kam, kas straumētu manu mp3 failu audio straumi. Es nolēmu to uzrakstīt PHP. Es ātri to uzrakstīju un palaidu. Viss strādāja. Tas bija forši! Bet pēc pāris dienām saņēmu vēstuli no hostinga administrācijas. Tajā teikts, ka ir pārsniegts procesora minūšu limits un nepieciešamība pāriet uz augstāku tarifu. Skripts bija jāizdzēš un šī opcija jāatsakās.

Kā tas notika? Es nevaru dzīvot bez radio. Ja tie neļauj jums palaist skriptu kāda cita mitināšanā, jums ir nepieciešams savs serveris. Kur es darīšu to, ko mana dvēsele vēlas.

Man ir senatnīgs netbook bez akumulatora (CPU - 900 MHz, RAM - 512 Mb). Sirmgalvim jau ir 11 gadi. Piemērots serverim. Es instalēju Ubuntu 12.04. Tad es instalēju Apache2 un php 5.3, samba. Mans serveris ir gatavs.

Es nolēmu izmēģināt Icecast. Es par to lasīju daudz mana. Bet man tas šķita grūti. Un es nolēmu atgriezties pie opcijas ar PHP skriptu. Pāris dienas tika pavadītas šī skripta atkļūdošanai. Un viss strādāja lieliski. Tad arī uzrakstīju skriptu podkāstu atskaņošanai. Un man tas tik ļoti patika, ka es nolēmu veikt nelielu projektu. To sauca par IWScast. Ievietots vietnē github.

Savs interneta radio

Viss ir ļoti vienkārši. Es iekopēju mp3 failus un index.php failu Apache saknes mapē /var/www/ un tie tiek atskaņoti nejauši. Apmēram visai dienai pietiek ar aptuveni 300 dziesmām.
Fails index.php ir pats skripts. Skripts nolasa visus direktorijā esošo MP3 failu nosaukumus masīvā. Izveido audio straumi un aizstāj MP3 failu nosaukumus. Ir reizes, kad klausies dziesmu un tev tā patīk. Kurš, tavuprāt, dzied? Šādā gadījumā žurnālā log.txt tiek ierakstīti noklausīto ierakstu nosaukumi
Pilnīgs skripta kods

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

Ja jums ir nepieciešams, lai celiņi tiktu atskaņoti secībā, jums ir jāizraksta rindiņa index.php

shuffle($files); //Random on

Aplādei izmantoju /var/www/podcast/ Ir vēl viens skripts index.php. Tam ir podcast ierakstu iegaumēšana. Nākamajā reizē, kad ieslēdzat interneta uztvērēju, tiek atskaņots nākamais aplādes celiņš. Ir arī atskaņoto dziesmu žurnāls.
Failā counter.dat varat norādīt celiņa numuru, un no tā tiks sākta podcast atskaņošana.

Rakstīja parsētājus aplādes automātiskai lejupielādei. Tas paņem jaunākos 4 ierakstus no RSS un lejupielādē tos. Tas viss lieliski darbojas viedtālrunī, IPTV televizora pierīcē vai pārlūkprogrammā.

Citu rītu man ienāca prātā, ka būtu lieliski atcerēties atskaņošanas pozīciju celiņā. Bet es vēl nezinu, kā to izdarīt PHP.

Skriptu var lejupielādēt github.com/iwsys/IWScast

Avots: www.habr.com

Pievieno komentāru