Radio internet Anda sendiri

Banyak dari kita suka mendengarkan radio di pagi hari. Dan suatu pagi yang cerah saya menyadari bahwa saya tidak ingin mendengarkan stasiun radio FM lokal. Tidak tertarik. Namun kebiasaan itu ternyata merugikan. Dan saya memutuskan untuk mengganti penerima FM dengan penerima Internet. Saya segera membeli suku cadang di Aliexpress dan memasang receiver Internet.

Tentang penerima Internet. Inti dari penerima adalah mikrokontroler ESP32. Firmware dari KA-radio. Suku cadangnya berharga $12. Kemudahan perakitan memungkinkan saya merakitnya dalam beberapa hari. Bekerja dengan baik dan stabil. Dalam 10 bulan pengerjaan, ia hanya membeku beberapa kali, dan itu hanya karena eksperimen saya. Antarmuka yang nyaman dan dipikirkan dengan matang memungkinkan Anda mengontrol dari ponsel cerdas dan komputer. Singkatnya, ini adalah penerima Internet yang luar biasa.

Semuanya baik-baik saja. Namun suatu pagi saya sampai pada kesimpulan bahwa meskipun saya memiliki akses ke puluhan ribu stasiun radio, tidak ada stasiun yang menarik. Saya kesal dengan iklan dan lelucon bodoh para presenter. Terus-menerus melompat dari satu stasiun ke stasiun lainnya. Saya suka Spotify dan Yandex.Music. Namun yang menyedihkan adalah mereka tidak berhasil di negara saya. Dan saya ingin mendengarkannya melalui receiver Internet.

Saya ingat masa kecil saya. Saya punya tape recorder dan dua lusin kaset. Saya bertukar kaset dengan teman-teman. Dan itu luar biasa. Saya memutuskan bahwa saya perlu mengalirkan arsip audio saya hanya ke penerima Internet. Tentu saja, ada opsi untuk menyambungkan pemutar audio atau iPod ke speaker dan jangan khawatir. Tapi ini bukan cara kami! Saya benci menghubungkan konektor)

Saya mulai mencari solusi siap pakai. Ada tawaran di pasar untuk membuat radio Internet Anda sendiri dari Radio-Tochka.com. Saya mengujinya selama 5 hari. Semuanya bekerja dengan baik pada receiver internet saya. Tapi harganya tidak menarik bagi saya. Saya menolak opsi ini.

Saya sudah membayar hosting 10 GB. Saya memutuskan untuk menulis skrip pada sesuatu yang akan mengalirkan aliran audio file mp3 saya. Saya memutuskan untuk menulisnya dalam PHP. Saya segera menulisnya dan meluncurkannya. Semuanya berhasil. Itu keren! Namun beberapa hari kemudian saya menerima surat dari administrasi hosting. Dikatakan bahwa batas menit prosesor telah terlampaui dan perlunya peningkatan ke tarif yang lebih tinggi. Skrip harus dihapus dan opsi ini ditinggalkan.

Bagaimana hal itu terjadi? Saya tidak bisa hidup tanpa radio. Jika mereka tidak mengizinkan Anda menjalankan skrip di hosting orang lain, maka Anda memerlukan server Anda sendiri. Dimana saya akan melakukan apa yang diinginkan jiwa saya.

Saya memiliki netbook kuno tanpa baterai (CPU - 900 MHz, RAM - 512 Mb). Orang tua itu sudah berumur 11 tahun. Cocok untuk server. Saya menginstal Ubuntu 12.04. Lalu saya install Apache2 dan php 5.3, samba. Server saya sudah siap.

Saya memutuskan untuk mencoba Icecast. Saya membaca banyak mana di dalamnya. Tapi saya merasa itu sulit. Dan saya memutuskan untuk kembali ke opsi dengan skrip PHP. Beberapa hari dihabiskan untuk men-debug skrip ini. Dan semuanya bekerja dengan baik. Lalu saya juga menulis script untuk memutar podcast. Dan saya sangat menyukainya sehingga saya memutuskan untuk membuat proyek kecil. Disebut IWScast. Diposting di github.

Radio internet Anda sendiri

Semuanya sangat sederhana. Saya menyalin file mp3 dan file index.php ke folder root Apache /var/www/ dan diputar secara acak. Sekitar 300 lagu cukup untuk seharian penuh.
File index.php adalah skrip itu sendiri. Script membaca semua nama file MP3 dalam direktori ke dalam array. Membuat aliran audio dan mengganti nama file MP3. Ada kalanya Anda mendengarkan sebuah lagu dan Anda menyukainya. Menurutmu siapa yang bernyanyi? Untuk kasus seperti itu, ada rekaman nama trek yang didengarkan di log log.txt
Kode 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 ingin trek diputar secara berurutan, Anda perlu memberi komentar pada baris di index.php

shuffle($files); //Random on

Untuk podcast saya menggunakan /var/www/podcast/ Ada skrip lain index.php. Ini memiliki menghafal trek podcast. Saat berikutnya Anda menghidupkan penerima Internet, trek podcast berikutnya akan diputar. Ada juga log trek yang diputar.
Di file counter.dat, Anda dapat menentukan nomor trek dan pemutaran podcast akan dimulai dari sana.

Menulis parser untuk mengunduh podcast secara otomatis. Dibutuhkan 4 lagu terbaru dari RSS dan mengunduhnya. Semua ini berfungsi dengan baik di ponsel cerdas, dekoder IPTV, atau di browser.

Suatu pagi terpikir oleh saya bahwa akan sangat menyenangkan mengingat posisi pemutaran suatu trek. Tapi saya belum tahu bagaimana melakukan ini di PHP.

Scriptnya bisa didownload github.com/iwsys/IWScast

Sumber: www.habr.com

Tambah komentar