MP3 Flash Player PHP буфер чтения ()

У меня есть mp3-плеер, и он отлично работает, даже показывая загруженную часть песни.

<embed src="player.swf" width="70" height="15"FlashVars="song=songs/song.mp3"/>

Но теперь я необходимость загрузить песню из файла .php, так было бы так

<embed src="player.swf" width="70" height="15" FlashVars="song=song.php"/>

а это моя песня

$filename="songs/song.mp3";
header("Expires: -1");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-type: audio/mpeg");
header("Content-Transfer-Encoding: binary");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0");
$len = filesize($filename);
header("Content-Length: $len;\n");
$outname=$archivo;
header("Content-Disposition: application/octet-stream");

readfile($filename);

Он отлично работает с кнопкой воспроизведения / остановки, но проблема в том, что таким образом он не показывает загруженную часть песни.

1

Решение

После нескольких часов поиска подсказок / кодов / ответов, я нашел код от Anindya и отредактировал его Михая Иорга, который, наконец, сработал для меня, проверьте вопрос Вот. Код:

set_time_limit(0);
$dirPath = "path_of_the_directory";
$songCode = $_REQUEST['c'];
$filePath = $dirPath . "/" . $songCode . ".mp3";
$strContext=stream_context_create(
array(
'http'=>array(
'method'=>'GET',
'header'=>"Accept-language: en\r\n")
)
);
$fpOrigin=fopen($filePath, 'rb', false, $strContext);
header('Content-Disposition: inline; filename="song.mp3"');
header('Pragma: no-cache');
header('Content-type: audio/mpeg');
header('Content-Length: '.filesize($filePath));
while(!feof($fpOrigin)){
$buffer=fread($fpOrigin, 4096);
echo $buffer;
flush();
}
fclose($fpOrigin);

Поэтому я просто заменил этот код в моем song.php, и теперь он работает отлично!

-1

Другие решения

Других решений пока нет …