Radio internet anda sendiri

Ramai antara kita suka mendengar radio pada waktu pagi. Dan kemudian pada suatu pagi yang cerah, saya menyedari bahawa saya tidak mahu mendengar stesen radio FM tempatan. Tidak berminat. Tetapi tabiat itu ternyata berbahaya. Dan saya memutuskan untuk menggantikan penerima FM dengan penerima Internet. Saya dengan cepat membeli alat ganti di Aliexpress dan memasang penerima Internet.

Mengenai penerima Internet. Jantung penerima ialah mikropengawal ESP32. Perisian tegar daripada KA-radio. Alat ganti itu berharga $12. Kemudahan pemasangan membolehkan saya memasangnya dalam beberapa hari. Berfungsi dengan baik dan stabil. Dalam 10 bulan bekerja, ia membeku hanya beberapa kali, dan kemudian hanya kerana percubaan saya. Antara muka yang mudah dan difikirkan dengan baik membolehkan anda mengawal dari telefon pintar dan komputer. Pendek kata, ini adalah penerima Internet yang hebat.

Semuanya baik. Tetapi pada suatu pagi saya membuat kesimpulan bahawa walaupun mempunyai akses kepada puluhan ribu stesen radio, tidak ada stesen yang menarik. Saya jengkel dengan pengiklanan dan jenaka bodoh penyampai. Sentiasa melompat dari satu stesen ke stesen yang lain. Saya suka Spotify dan Yandex.Music. Tetapi perkara yang menyedihkan ialah mereka tidak bekerja di negara saya. Dan saya ingin mendengarnya melalui penerima Internet.

Saya teringat zaman kanak-kanak saya. Saya mempunyai perakam pita dan dua dozen kaset. Saya bertukar-tukar kaset dengan kawan-kawan. Dan ia adalah indah. Saya memutuskan bahawa saya perlu menstrim arkib audio saya hanya kepada penerima Internet. Sudah tentu, terdapat pilihan untuk menyambungkan pemain audio atau iPod ke pembesar suara dan jangan risau. Tetapi ini bukan cara kami! Saya benci menyambung penyambung)

Saya mula mencari penyelesaian siap sedia. Terdapat tawaran di pasaran untuk mencipta radio Internet anda sendiri daripada Radio-Tochka.com. Saya mengujinya selama 5 hari. Semuanya berfungsi dengan baik dengan penerima internet saya. Tetapi harganya tidak menarik bagi saya. Saya menolak pilihan ini.

Saya telah membayar hosting 10 GB. Saya memutuskan untuk menulis skrip pada sesuatu yang akan menstrim aliran audio fail mp3 saya. Saya memutuskan untuk menulisnya dalam PHP. Saya cepat menulis dan melancarkannya. Semuanya berjaya. Ia adalah sejuk! Tetapi beberapa hari kemudian saya menerima surat daripada pentadbiran hosting. Ia berkata bahawa had minit pemproses telah melebihi dan keperluan untuk menaik taraf kepada tarif yang lebih tinggi. Skrip terpaksa dipadamkan dan pilihan ini ditinggalkan.

Bagaimana ia berlaku? Saya tidak boleh hidup tanpa radio. Jika mereka tidak membenarkan anda menjalankan skrip pada pengehosan orang lain, maka anda memerlukan pelayan anda sendiri. Di mana saya akan melakukan apa yang jiwa saya inginkan.

Saya mempunyai netbook purba tanpa bateri (CPU - 900 MHz, RAM - 512 Mb). Lelaki tua itu sudah berumur 11 tahun. Sesuai untuk pelayan. Saya memasang Ubuntu 12.04. Kemudian saya memasang Apache2 dan php 5.3, samba. Pelayan saya sedia.

Saya memutuskan untuk mencuba Icecast. Saya membaca banyak mana mengenainya. Tetapi saya mendapati ia sukar. Dan saya memutuskan untuk kembali ke pilihan dengan skrip PHP. Beberapa hari telah dihabiskan untuk menyahpepijat skrip ini. Dan semuanya berfungsi dengan baik. Kemudian saya juga menulis skrip untuk memainkan podcast. Dan saya sangat menyukainya sehingga saya memutuskan untuk melakukan projek kecil. Memanggilnya IWScast. Disiarkan di github.

Radio internet anda sendiri

Semuanya sangat mudah. Saya menyalin fail mp3 dan fail index.php ke dalam folder akar Apache /var/www/ dan ia dimainkan secara rawak. Kira-kira 300 lagu cukup untuk lebih kurang sepanjang hari.
Fail index.php ialah skrip itu sendiri. Skrip membaca semua nama fail MP3 dalam direktori ke dalam tatasusunan. Mencipta strim audio dan menggantikan nama fail MP3. Ada kalanya anda mendengar lagu dan anda menyukainya. Siapa yang anda fikir menyanyi? Untuk kes sedemikian, terdapat rakaman nama lagu yang didengar dalam log log.txt
Kod skrip lengkap

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

Jika anda memerlukan trek untuk dimainkan dengan teratur, maka anda perlu mengulas baris dalam index.php

shuffle($files); //Random on

Untuk podcast saya gunakan /var/www/podcast/ Terdapat satu lagi skrip index.php. Ia mempunyai hafalan trek podcast. Pada kali seterusnya anda menghidupkan penerima Internet, trek podcast seterusnya dimainkan. Terdapat juga log trek yang dimainkan.
Dalam fail counter.dat, anda boleh menentukan nombor trek dan main balik podcast akan bermula daripadanya.

Menulis parser untuk muat turun automatik podcast. Ia mengambil 4 lagu terkini daripada RSS dan memuat turunnya. Semua ini berfungsi hebat pada telefon pintar, kotak atas set IPTV atau dalam penyemak imbas.

Pada pagi yang lain, saya terfikir bahawa adalah bagus untuk mengingati kedudukan main semula pada trek. Tetapi saya tidak tahu lagi bagaimana untuk melakukan ini dalam PHP.

Skrip boleh dimuat turun github.com/iwsys/IWScast

Sumber: www.habr.com

Tambah komen