ඔබේම අන්තර්ජාල ගුවන් විදුලිය

අපි බොහෝ දෙනෙක් උදේට ගුවන් විදුලියට සවන් දීමට කැමතියි. පසුව එක් හොඳ උදෑසනක මට වැටහුණා මට දේශීය එෆ්එම් ගුවන් විදුලි මධ්‍යස්ථානවලට සවන් දීමට අවශ්‍ය නැති බව. උනන්දුවක් නැත. නමුත් පුරුද්ද හානිකර විය. එෆ්එම් ග්‍රාහකය අන්තර්ජාල ග්‍රාහකයක් සමඟ ප්‍රතිස්ථාපනය කිරීමට මම තීරණය කළෙමි. මම ඉක්මනින් Aliexpress හි කොටස් මිලදී ගෙන අන්තර්ජාල ග්‍රාහකයක් එකලස් කළෙමි.

අන්තර්ජාල ග්රාහකයා ගැන. ග්‍රාහකයාගේ හදවත ESP32 ක්ෂුද්‍ර පාලකයයි. KA-රේඩියෝ වෙතින් ස්ථිරාංග. කොටස් සඳහා මට ඩොලර් 12 ක් වැය වේ. එකලස් කිරීමේ පහසුව නිසා මට එය දින කිහිපයකින් එකලස් කිරීමට හැකි විය. හොඳින් හා ස්ථාවර ලෙස ක්රියා කරයි. මාස 10 ක වැඩ වලදී, එය කැටි වූයේ කිහිප වතාවක් පමණි, පසුව මගේ අත්හදා බැලීම් නිසා පමණි. පහසු සහ හොඳින් සිතා ගත හැකි අතුරු මුහුණතක් ඔබට ස්මාර්ට් ජංගම දුරකතනයකින් සහ පරිගණකයකින් පාලනය කිරීමට ඉඩ සලසයි. වචනයෙන් කියනවා නම්, මෙය අපූරු අන්තර්ජාල ග්රාහකයකි.

හැම දෙයක්ම හරි. නමුත් එක් උදෑසනක මම නිගමනය කළේ ගුවන්විදුලි මධ්‍යස්ථාන දස දහස් ගණනකට ප්‍රවේශය තිබියදීත් සිත්ගන්නා මධ්‍යස්ථාන නොමැති බවයි. ප්‍රචාරණය සහ ඉදිරිපත් කරන්නන්ගේ මෝඩ විහිළු නිසා මම කෝපයට පත් විය. එක ස්ටේෂන් එකකින් තවත් ස්ටේෂන් එකකට එක දිගටම පනිනවා. මම Spotify සහ Yandex.Music වලට කැමතියි. නමුත් කනගාටුවට කරුණ නම් ඔවුන් මගේ රටේ වැඩ නොකිරීමයි. ඒ වගේම මම අන්තර්ජාල ග්‍රාහකය හරහා ඔවුන්ට සවන් දීමට කැමතියි.

මට මගේ ළමා කාලය මතක් වුණා. මට ටේප් රෙකෝඩරයක් සහ කැසට් දුසිම් දෙකක් තිබුණා. මම මිතුරන් සමඟ කැසට් හුවමාරු කර ගත්තෙමි. ඒ වගේම අපූරුයි. මම මගේ ශ්‍රව්‍ය සංරක්ෂිත ප්‍රවාහ කිරීමට අවශ්‍ය වන්නේ අන්තර්ජාල ග්‍රාහකයකට පමණක් බව මම තීරණය කළෙමි. ඇත්ත වශයෙන්ම, ශබ්ද විකාශන යන්ත්‍රයක් හෝ අයි-පොඩ් ස්පීකර් වෙත සම්බන්ධ කිරීමට විකල්පයක් ඇති අතර කරදර නොවන්න. නමුත් මෙය අපගේ මාර්ගය නොවේ! සම්බන්ධක සම්බන්ධ කිරීමට මම අකමැතියි)

මම සූදානම් කළ විසඳුම් සෙවීමට පටන් ගතිමි. Radio-Tochka.com වෙතින් ඔබේම අන්තර්ජාල රේඩියෝවක් නිර්මාණය කිරීමට වෙළඳපොලේ පිරිනැමීමක් තිබේ. මම එය දින 5 ක් පරීක්ෂා කළා. මගේ අන්තර්ජාල ග්‍රාහකය සමඟ සෑම දෙයක්ම හොඳින් ක්‍රියාත්මක විය. නමුත් මිල මට ආකර්ශනීය නොවීය. මම මෙම විකල්පය ප්‍රතික්ෂේප කළෙමි.

මම හොස්ටින්ග් 10 GB ගෙවලා තියෙනවා. මම මගේ mp3 ගොනු වල ශ්‍රව්‍ය ප්‍රවාහය ප්‍රවාහ කරන දෙයක පිටපතක් ලිවීමට තීරණය කළෙමි. මම එය PHP වලින් ලිවීමට තීරණය කළෙමි. මම ඉක්මනින් එය ලියා එය දියත් කළෙමි. හැම දෙයක්ම වැඩ කළා. එය සිසිල් විය! නමුත් දින කිහිපයකට පසු මට සත්කාරක පරිපාලනයෙන් ලිපියක් ලැබුණි. එහි ප්‍රොසෙසර මිනිත්තු සීමාව ඉක්මවා ගොස් ඇති බවත් ඉහළ ගාස්තුවකට උත්ශ්‍රේණි කිරීමේ අවශ්‍යතාවය ඇති බවත්ය. ස්ක්‍රිප්ට් එක මකා දැමීමට සිදු වූ අතර මෙම විකල්පය අත්හැරීමට සිදු විය.

එය සිදුවූයේ කොහොමද? මට ගුවන්විදුලිය නොමැතිව ජීවත් විය නොහැක. වෙනත් කෙනෙකුගේ සත්කාරකත්වය මත ස්ක්‍රිප්ට් ධාවනය කිරීමට ඔවුන් ඔබට ඉඩ නොදෙන්නේ නම්, ඔබට ඔබේම සේවාදායකයක් අවශ්‍ය වේ. මගේ ආත්මය කැමති දේ මම කරන තැන.

මට බැටරියක් නොමැතිව පැරණි නෙට්බුක් එකක් ඇත (CPU - 900 MHz, RAM - 512 Mb). මහලු මිනිසා දැනටමත් වයස අවුරුදු 11 කි. සේවාදායකයක් සඳහා සුදුසු වේ. මම උබුන්ටු 12.04 ස්ථාපනය කරමි. ඊට පස්සේ මම Apache2 සහ php 5.3, samba ස්ථාපනය කරනවා. මගේ සේවාදායකය සූදානම්.

මම Icecast උත්සාහ කිරීමට තීරණය කළා. මම ඒකේ මානා ගොඩක් කියෙව්වා. ඒත් මට ඒක අමාරු වුණා. මම PHP ස්ක්‍රිප්ට් සමඟ විකල්පය වෙත ආපසු යාමට තීරණය කළෙමි. මෙම ස්ක්‍රිප්ටය නිදොස් කිරීමට දින කිහිපයක් ගත විය. ඒ වගේම හැම දෙයක්ම හොඳින් වැඩ කළා. ඊට පස්සේ මම පොඩ්කාස්ට් ප්ලේ කරන්න පිටපතකුත් ලිව්වා. ඒ වගේම මම ඒකට ගොඩක් කැමති නිසා මම තීරණය කළා පොඩි ව්‍යාපෘතියක් කරන්න. එය IWScast ලෙස හැඳින්වේ. github හි පළ කර ඇත.

ඔබේම අන්තර්ජාල ගුවන් විදුලිය

සෑම දෙයක්ම ඉතා සරලයි. මම mp3 ගොනු සහ index.php ගොනුව Apache root ෆෝල්ඩරය /var/www/ වෙත පිටපත් කරන අතර ඒවා අහඹු ලෙස වාදනය වේ. ගීත 300ක් පමණ මුළු දවසටම ප්‍රමාණවත්ය.
index.php ගොනුව script එක ම වේ. ස්ක්‍රිප්ට් එක ඩිරෙක්ටරියක ඇති MP3 ගොනු වල සියලුම නම් අරාවකට කියවයි. ශ්‍රව්‍ය ප්‍රවාහයක් නිර්මාණය කර MP3 ගොනු වල නම් ආදේශ කරයි. සිංදුවක් අහලා ආස කරන වෙලාවල් තියෙනවා. ඔබ හිතන්නේ කවුද ගායනා කරන්නේ? එවැනි අවස්ථාවක් සඳහා, log.txt 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

Podcasts සඳහා මම භාවිතා කරන්නේ /var/www/podcast/ තවත් script index.php. එහි පොඩ්කාස්ට් ට්‍රැක් කටපාඩම් ඇත. ඊළඟ වතාවේ ඔබ අන්තර්ජාල ග්‍රාහකය ක්‍රියාත්මක කරන විට, ඊළඟ පොඩ්කාස්ට් ධාවන පථය වාදනය වේ. වාදනය කළ ධාවන පථවල ලොගයක් ද ඇත.
counter.dat ගොනුව තුළ, ඔබට ධාවන අංකය සඳහන් කළ හැකි අතර පොඩ්කාස්ට් නැවත ධාවනය ආරම්භ වනු ඇත.

පොඩ්කාස්ට් ස්වයංක්‍රීයව බාගත කිරීම සඳහා විග්‍රහයන් ලිවීය. එය RSS වෙතින් නවතම ධාවන පථ 4 ගෙන ඒවා බාගත කරයි. මේ සියල්ල ස්මාර්ට් ෆෝන් එකක, IPTV set-top box එකක හෝ බ්‍රවුසරයක හොඳින් ක්‍රියා කරයි.

පසුගිය දිනක උදෑසන මගේ සිතට නැගුනේ ධාවන පථයක ධාවන ස්ථානය මතක තබා ගැනීම ඉතා හොඳ බවයි. නමුත් මම තාම දන්නේ නෑ මේක PHP වලින් කරන්නේ කොහොමද කියලා.

පිටපත බාගත කළ හැකිය github.com/iwsys/IWScast

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න