Өөрийн интернет радио

Бидний олонхи нь өглөө радио сонсох дуртай. Тэгээд нэг сайхан өглөө би орон нутгийн FM радио станцуудыг сонсохыг хүсэхгүй байгаагаа ойлгосон. Сонирхолгүй. Гэвч энэ зуршил нь хортой болж хувирав. Тэгээд би FM хүлээн авагчийг интернет хүлээн авагчаар солихоор шийдсэн. Би Aliexpress дээр хурдан эд анги худалдаж аваад интернет хүлээн авагч угсарсан.

Интернет хүлээн авагчийн тухай. Хүлээн авагчийн зүрх нь ESP32 микроконтроллер юм. KA-радиогийн програм хангамж. Эд анги нь надад 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 root хавтас /var/www/ руу хуулж, санамсаргүй байдлаар тоглодог. Ойролцоогоор 300 орчим дуу бүтэн өдрийн турш хангалттай.
index.php файл нь өөрөө скрипт юм. Скрипт нь сан дахь MP3 файлуудын бүх нэрийг массив болгон уншдаг. Аудио урсгал үүсгэж, MP3 файлын нэрийг орлуулна. Дууг нь сонсоод таалагдах үе байдаг. Таны бодлоор хэн дуулж байна вэ? Ийм тохиолдолд 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 файлд та дууны дугаарыг зааж өгөх боломжтой бөгөөд үүнээс подкаст тоглуулах болно.

Подкастуудыг автоматаар татахын тулд задлан шинжлэгч бичсэн. Энэ нь RSS-ээс хамгийн сүүлийн үеийн 4 дууг авч татаж авдаг. Энэ бүхэн ухаалаг утас, IPTV тоглуулагч төхөөрөмж эсвэл хөтөч дээр маш сайн ажилладаг.

Нөгөө өглөө нь зам дээр тоглуулах байрлалыг санах нь сайхан байх болно гэж бодсон. Гэхдээ би үүнийг PHP дээр яаж хийхээ мэдэхгүй байна.

Скриптийг татаж авах боломжтой github.com/iwsys/IWScast

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх