ืจืืื ืืืืชื ื ืืืืืื ืืืืืื ืืจืืื ืืืืงืจ. ืืื ืืืงืจ ืืืืจ ืืื ืืื ืชื ืฉืื ื ืื ืจืืฆื ืืืืืื ืืชืื ืืช ืจืืื FM ืืงืืืืืช. ืื ืืขืื ืืื. ืืื ืืืจืื ืืชืืจืจ ืืืืืง. ืืืืืืชื ืืืืืืฃ ืืช ืืงืื ื-FM ืืืงืื ืืื ืืจื ื. ืงื ืืชื ืืืจ ืืืงืื ืืืืืืงืกืคืจืก ืืืจืืืชื ืืงืื ืืื ืืจื ื.
ืืืื ืืงืื ืืืื ืืจื ื. ืื ืืืงืื ืืื ืืืืงืจื-ืืงืจ ESP32. ืงืืฉืื ื-KA-radio. ืืืืงืื ืขืื ืื 12 ืืืืจ. ืงืืืช ืืืจืืื ืืคืฉืจื ืื ืืืจืืื ืืืชื ืชืื ืืืืืื. ืขืืื ืืืื ืืืฆืื. ื-10 ืืืืฉืื ืฉื ืขืืืื, ืื ืงืคื ืจืง ืืื ืคืขืืื, ืืื ืจืง ืืืื ืื ืืกืืืื ืฉืื. ืืืฉืง ื ืื ืืืืืฉื ืืืคืฉืจ ืฉืืืื ืืกืืืจืืคืื ืืืืฉื. ืืืืื ืืืช, ืืื ืืงืื ืืื ืืจื ื ื ืคืื.
ืืื ืืกืืจ. ืืื ืืืงืจ ืืืงืื ืืื ืืืขืชื ืืืกืงื ื ืฉืืืจืืช ืฉืืฉ ืื ืืืฉื ืืขืฉืจืืช ืืืคื ืชืื ืืช ืจืืื, ืื ืืื ืชืื ืืช ืืขื ืืื ืืช. ืืชืขืฆืื ืชื ืืืคืจืกืื ืืืืืืืืืช ืืืืืคืฉืืช ืฉื ืืืืืฉืื. ืงืืคืฅ ืืื ืืจืฃ ืืชืื ื ืืืช ืืืืจืช. ืื ื ืืืื ืืช Spotify ืืืช Yandex.Music. ืืื ืืืืจ ืืขืฆืื ืืื ืฉืื ืื ืขืืืืื ืืืืื ื ืฉืื. ืืื ื ืจืืฆื ืืืืืื ืืื ืืจื ืืงืื ืืืื ืืจื ื.
ื ืืืจืชื ืืืืืืชื. ืืื ืื ืจืฉืืงืื ืืฉื ื ืชืจืืกืจ ืงืืืืช. ืืืืคืชื ืงืืืืช ืขื ืืืจืื. ืืื ืืื ื ืคืื. ืืืืืชื ืฉืื ื ืฆืจืื ืืืืจืื ืืช ืืจืืืื ืืืืืื ืฉืื ืจืง ืืืงืื ืืื ืืจื ื. ืืืืื ืฉืืฉ ืืคืฉืจืืช ืืืืจ ื ืื ืฉืืข ืื ืืืืคืื ืืจืืงืืืื ืืื ืืืืื. ืืื ืื ืื ืืจืื ื! ืื ื ืฉืื ื ืืืืจ ืืืืจืื)
ืืชืืืชื ืืืคืฉ ืคืชืจืื ืืช ืืืื ืื. ืืฉ ืืฆืขื ืืฉืืง ืืืฆืืจ ืจืืื ืืื ืืจื ื ืืฉืื ื-Radio-Tochka.com. ืืืงืชื ืืช ืื ืืืฉื 5 ืืืื. ืืื ืขืื ืืกืืจ ืขื ืืงืื ืืืื ืืจื ื ืฉืื. ืืื ืืืืืจ ืื ืืื ืืืจืงืืืื ืืขืื ื. ืืืืชื ืืคืฉืจืืช ืื.
ืฉืืืืชื ืืืกืื ืฉื 10 GB. ืืืืืชื ืืืชืื ืชืกืจืื ืขื ืืฉืื ืฉืืืจืื ืืช ืืจื ืืืืืื ืฉื ืงืืฆื ื-MP3 ืฉืื. ืืืืืชื ืืืชืื ืืช ืื ื-PHP. ืืชืืชื ืืืชื ืืืืืจืืช ืืืคืขืืชื ืืืชื. ืืื ืขืื. ืื ืืื ืืื ืื! ืืื ืืื ืืืื ืืืืจ ืืื ืงืืืืชื ืืืชื ืืื ืืืช ืืืืจืื. ืืื ืืืจ ืฉืืจื ืืืืืืช ืืงืืช ืืืขืื ืืืฆืืจื ืืฉืืจื ืืชืขืจืืฃ ืืืื ืืืชืจ. ืืื ืฆืจืื ืืืืืง ืืช ืืชืกืจืื ืืื ืืืฉ ืืช ืืืคืฉืจืืช ืืื.
ืืื ืื ืงืจื? ืื ื ืื ืืืื ืืืืืช ืืื ืจืืื. ืื ืื ืื ืืืคืฉืจืื ืื ืืืคืขืื ืืช ืืกืงืจืืคื ืขื ืืืจืื ืฉื ืืืฉืื ืืืจ, ืื ืืชื ืฆืจืื ืฉืจืช ืืฉืื. ืืืคื ืืขืฉื ืื ืฉืืฉืงื ื ืคืฉื.
ืืฉ ืื ื ืืืืง ืขืชืืง ืืื ืกืืืื (ืืขืื - 900 ืืื-ืืจืฅ, ืืืืจืื RAM - 512 ืืื-ืืืื). ืืืงื ืืืจ ืื 11. ืืชืืื ืืฉืจืช. ืื ื ืืชืงืื ืืช ืืืืื ืื 12.04. ืืื ืื ื ืืชืงืื ืืช Apache2 ื-php 5.3, ืกืืื. ืืฉืจืช ืฉืื ืืืื.
ืืืืืชื ืื ืกืืช ืืช Icecast. ืงืจืืชื ืืจืื ืืื ื ืขื ืื. ืืื ืืื ืื ืงืฉื. ืืืืืืชื ืืืืืจ ืืืืคืฆืื ืขื ืกืงืจืืคื PHP. ืืืืื ื ืืื ืืืื ืื ืืคืื ืืืืื ืืกืงืจืืคื ืืื. ืืืื ืขืื ืืฆืืื. ืืืจ ืื ืื ืืชืืชื ืชืกืจืื ืื ืื ืคืืืงืืกืืื. ืืื ืื ืืืืชื ืฉืืืืืชื ืืขืฉืืช ืคืจืืืงื ืงืื. ืงืจืื ืืื 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.
ื ืืชื ืืืืจืื ืืช ืืชืกืจืื
ืืงืืจ: www.habr.com