วิทยุอินเทอร์เน็ตของคุณเอง

พวกเราหลายคนชอบฟังวิทยุในตอนเช้า แล้วเช้าวันหนึ่งที่ดีฉันก็รู้ว่าฉันไม่ต้องการฟังสถานีวิทยุ FM ท้องถิ่น ไม่สนใจ. แต่นิสัยกลับกลายเป็นอันตราย และฉันตัดสินใจเปลี่ยนเครื่องรับ FM เป็นเครื่องรับอินเทอร์เน็ต ฉันซื้อชิ้นส่วนอย่างรวดเร็วใน Aliexpress และประกอบตัวรับสัญญาณอินเทอร์เน็ต

เกี่ยวกับตัวรับสัญญาณอินเทอร์เน็ต หัวใจของเครื่องรับคือไมโครคอนโทรลเลอร์ ESP32 เฟิร์มแวร์จากวิทยุ KA อะไหล่มีราคา 12 ดอลลาร์ ความง่ายในการประกอบทำให้ฉันประกอบได้ภายในสองสามวัน ทำงานได้ดีและเสถียร ในการทำงาน 10 เดือน มันค้างเพียงไม่กี่ครั้ง และหลังจากนั้นเพียงเพราะการทดลองของฉันเท่านั้น อินเทอร์เฟซที่สะดวกและคิดมาอย่างดีช่วยให้คุณควบคุมจากสมาร์ทโฟนและคอมพิวเตอร์ นี่คือเครื่องรับอินเทอร์เน็ตที่ยอดเยี่ยม

ทุกอย่างเรียบร้อยดี แต่เช้าวันหนึ่งฉันก็ได้ข้อสรุปว่าแม้จะเข้าถึงสถานีวิทยุได้เป็นหมื่นสถานี แต่ก็ไม่มีสถานีที่น่าสนใจเลย ฉันรู้สึกรำคาญกับโฆษณาและมุกตลกโง่ ๆ ของผู้นำเสนอ กระโดดจากสถานีหนึ่งไปอีกสถานีหนึ่งอย่างต่อเนื่อง ฉันชอบ Spotify และ Yandex.Music แต่สิ่งที่น่าเศร้าก็คือพวกเขาไม่ได้ทำงานในประเทศของฉัน และฉันต้องการฟังพวกเขาผ่านเครื่องรับอินเทอร์เน็ต

ฉันนึกถึงวัยเด็กของฉัน ฉันมีเครื่องบันทึกเทปและเทปสองโหล ฉันแลกเปลี่ยนเทปกับเพื่อน และมันก็วิเศษมาก ฉันตัดสินใจว่าจะต้องสตรีมไฟล์เสียงของฉันไปยังเครื่องรับอินเทอร์เน็ตเท่านั้น แน่นอนว่ามีตัวเลือกในการเชื่อมต่อเครื่องเล่นเสียงหรือ iPod เข้ากับลำโพงโดยไม่ต้องกังวล แต่นี่ไม่ใช่ทางของเรา! ฉันเกลียดการเชื่อมต่อตัวเชื่อมต่อ)

ฉันเริ่มมองหาวิธีแก้ปัญหาสำเร็จรูป มีข้อเสนอในตลาดเพื่อสร้างวิทยุอินเทอร์เน็ตของคุณเองจาก Radio-Tochka.com ฉันทดสอบมันเป็นเวลา 5 วัน ทุกอย่างทำงานได้ดีกับตัวรับสัญญาณอินเทอร์เน็ตของฉัน แต่ราคาไม่น่าดึงดูดสำหรับฉัน ฉันปฏิเสธตัวเลือกนี้

ฉันจ่ายค่าโฮสติ้ง 10 GB แล้ว ฉันตัดสินใจเขียนสคริปต์เกี่ยวกับสิ่งที่จะสตรีมสตรีมเสียงของไฟล์ 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 /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 คุณสามารถระบุหมายเลขแทร็ก จากนั้นการเล่นพอดแคสต์จะเริ่มจากหมายเลขนั้น

เขียน parsers สำหรับการดาวน์โหลดพอดแคสต์โดยอัตโนมัติ ใช้ 4 แทร็กล่าสุดจาก RSS และดาวน์โหลด ทั้งหมดนี้ใช้งานได้ดีบนสมาร์ทโฟน กล่องรับสัญญาณ IPTV หรือในเบราว์เซอร์

เช้าวันก่อน นึกในใจว่าการจำตำแหน่งการเล่นบนแทร็กจะดีมาก แต่ฉันยังไม่รู้ว่าจะต้องทำอย่างไรใน PHP

สามารถดาวน์โหลดสคริปต์ได้ github.com/iwsys/IWScast

ที่มา: will.com

เพิ่มความคิดเห็น