Самое смешное, что я написал медиа-галерею php для всей моей музыки 2 дня назад. У меня была похожая проблема. Я использую http://musicplayer.sourceforge.net/ для игрока. И плейлист построен через php. Все музыкальные запросы отправляются туда скриптом с именем xfer.php? File = WHATEVER
$filename = base64_url_decode($_REQUEST['file']);
header("Cache-Control: public");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
// Put either file counting code here. either a db or static files
//
readfile($filename); //and spit the user the file
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
А при вызове файлов используйте что-то вроде:
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
http://us.php.net/manual/en/function.base64-encode.php
Если вы используете какой-либо javascript или flash-проигрыватель (например, JW-проигрыватель), для которого требуется, чтобы фактическая ссылка представляла собой файл mp3 или что-то еще, вы можете добавить текст «& type = .mp3», чтобы конечный линк стал примерно :
"Www.example.com/xfer.php?file=34842ffjfjxfh&type=.mp3". Таким образом, он выглядит так, как будто он заканчивается расширением mp3, не затрагивая ссылку на файл.