راديو الإنترنت الخاص بك

يحب الكثير منا الاستماع إلى الراديو في الصباح. ثم في صباح أحد الأيام أدركت أنني لا أريد الاستماع إلى محطات راديو FM المحلية. غير مهتم. لكن تبين أن هذه العادة ضارة. وقررت استبدال جهاز استقبال FM بجهاز استقبال الإنترنت. لقد اشتريت بسرعة أجزاء من Aliexpress وقمت بتجميع جهاز استقبال الإنترنت.

حول جهاز استقبال الإنترنت. قلب جهاز الاستقبال هو متحكم ESP32. البرامج الثابتة من راديو KA. الأجزاء كلفتني 12 دولارًا. سمحت لي سهولة التجميع بتجميعه في غضون يومين. يعمل بشكل جيد ومستقر. لمدة 10 أشهر من العمل، تجمدت بضع مرات فقط، ثم فقط بسبب تجاربي. تتيح لك الواجهة المريحة والمدروسة التحكم من الهاتف الذكي والكمبيوتر. باختصار، هذا جهاز استقبال إنترنت رائع.

كل شيء على ما يرام. ولكن في صباح أحد الأيام توصلت إلى استنتاج مفاده أنه على الرغم من إمكانية الوصول إلى عشرات الآلاف من محطات الراديو، إلا أنه لا توجد محطات مثيرة للاهتمام. لقد انزعجت من الإعلانات ونكات المذيعين الغبية. القفز المستمر من محطة إلى أخرى. أنا أحب Spotify وYandex.Music. لكن الشيء المحزن هو أنهم لا يعملون في بلدي. وأود أن أستمع إليهم عبر جهاز استقبال الإنترنت.

تذكرت طفولتي. كان لدي جهاز تسجيل وعشرون شريط كاسيت. لقد تبادلت أشرطة الكاسيت مع الأصدقاء. وكان رائعا. قررت أنني بحاجة إلى بث أرشيفاتي الصوتية فقط إلى جهاز استقبال الإنترنت. بالطبع، هناك خيار لتوصيل مشغل الصوت أو iPod بالسماعات ولا داعي للقلق. لكن هذه ليست طريقتنا! أنا أكره ربط الموصلات)

بدأت بالبحث عن حلول جاهزة. يوجد عرض في السوق لإنشاء راديو الإنترنت الخاص بك من Radio-Tochka.com. لقد اختبرت ذلك لمدة 5 أيام. كل شيء سار على ما يرام مع جهاز استقبال الإنترنت الخاص بي. لكن السعر لم يكن جذابا بالنسبة لي. لقد رفضت هذا الخيار.

لقد دفعت استضافة 10 جيجابايت. قررت أن أكتب نصًا لشيء من شأنه أن يقوم ببث التدفق الصوتي لملفات mp3 الخاصة بي. قررت أن أكتبها بلغة PHP. لقد كتبته بسرعة وأطلقته. كل شيء يعمل. كان هذا رائعا! لكن بعد يومين وصلتني رسالة من إدارة الاستضافة. وقالت إنه تم تجاوز الحد الأقصى لدقائق المعالج والحاجة إلى الترقية إلى تعريفة أعلى. كان لا بد من حذف البرنامج النصي والتخلي عن هذا الخيار.

كيف حدث ذلك؟ لا أستطيع العيش بدون الراديو. إذا لم يسمحوا لك بتشغيل البرنامج النصي على استضافة شخص آخر، فأنت بحاجة إلى خادم خاص بك. حيث سأفعل ما تريده روحي.

لدي نتبووك قديم بدون بطارية (وحدة المعالجة المركزية - 900 ميجا هرتز، ذاكرة الوصول العشوائي - 512 ميجا بايت). الرجل العجوز يبلغ من العمر 11 عامًا بالفعل. مناسبة للخادم. أقوم بتثبيت أوبونتو 12.04. ثم أقوم بتثبيت Apache2 وphp 5.3، samba. الخادم الخاص بي جاهز.

قررت تجربة Icecast. قرأت الكثير من المانا عليه. لكنني وجدت الأمر صعبًا. وقررت العودة إلى الخيار باستخدام برنامج PHP النصي. تم قضاء يومين في تصحيح أخطاء هذا البرنامج النصي. وكل شيء يعمل بشكل رائع. ثم كتبت أيضًا نصًا لتشغيل ملفات podcast. وأعجبني الأمر كثيرًا لدرجة أنني قررت أن أقوم بمشروع صغير. أطلق عليه اسم IWScast. نشر على جيثب.

راديو الإنترنت الخاص بك

كل شيء بسيط جدا. أقوم بنسخ ملفات 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، يمكنك تحديد رقم المسار وسيبدأ تشغيل البودكاست منه.

كتب محللًا للتنزيل التلقائي للبودكاست. فهو يأخذ أحدث 4 مسارات من RSS ويقوم بتنزيلها. كل هذا يعمل بشكل رائع على الهاتف الذكي أو جهاز استقبال IPTV أو في المتصفح.

في صباح أحد الأيام خطر لي أنه سيكون من الرائع أن أتذكر موضع التشغيل على المسار. لكنني لا أعرف حتى الآن كيفية القيام بذلك في PHP.

يمكن تنزيل البرنامج النصي github.com/iwsys/IWScast

المصدر: www.habr.com

إضافة تعليق