Доброго времени суток!
Пожалуйста простите за то, что этот топик такой длинный, но у меня имеется две проблемы и в двух словах не описать их.
Возможно, что кому-то это покажется глупым, но мне хотелось бы знать, как решить две проблемы, которые стали перед мной.
1. Какие нужно использовать заголовки для передачи media контента на веб страницу?
У меня компьютер с windows. Использую Open server. На диске D: имеется каталог Music. В нем есть несколько музыкальных файлов. Я хочу их воспроизвести на локальном сайте. В Html audio player я вставляю такую ссылку.
<audio src='http://my-site.local/music/123' controls></audio>
Адрес, /music/123, ведет на страницу audio.php и в ней есть такой код.
<?php
function download($file) {
if (file_exists($file)) {
// сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
// если этого не сделать файл будет читаться в память полностью!
if (ob_get_level()) {
ob_end_clean();
}
// заставляем браузер показать окно сохранения файла
// header('Content-Description: File Transfer');
// header('Content-Type: application/octet-stream');
header("content-type: audio/mpeg");
header('Accept-Ranges: bytes');
header('Content-Length: ' . filesize($file));
// читаем файл и отправляем его пользователю
if ($fd = fopen($file, 'rb')) {
while (!feof($fd)) {
print fread($fd, 1024);
}
fclose($fd);
}
exit;
}
}
download("D:/music/".$_GET['filename'].".mp3"); // Из адреса, где есть /music/123
?>
В таком варианте музыка воспроизводится корректно, но очень редко бывает так, что проигрыватель затыкается, как будто что-то докачивает, и может через минуту играть дальше.
Это дико раздражает и я подумал, что у меня может с заголовками что-то не так. Кто знает, в чем может быть причина?
Ведь, файлы, которые будут лежать у меня на сайте и будут доступны по ссылке,
my-site.local/file.mp3, будет работать без всяких проблем.
2. Файлы могут содержать знак & и из-за этого могут сломаться get параметры.
По этой причине я обращаюсь к audio.php через POST. Однако, я не могу понять, как правильно получить данные, чтобы вставить их в проигрыватель.
Вод код.
$(document).ready(function(){
$.post("/audio.php",{file: 'm&m.mp3'},audioPlay);
function audioPlay(data) {
// А вот как дальше вставить это в проигрыватель, я не знаю.
audio.src = data; // Так браузер зависает.
}
});
Спасибо, что вы дочитали это до конца и надеюсь на вашу помощь в решении двух моих проблем.
С уважением - Автор топика!