PHP как воспроизвести аудио с другого сервера?

Предположим, что у меня есть ссылка с аудио файлом на выходе (я взял для примера ссылку из вк), я со своего сайта по средством тега "audio" обращаюсь к моей ссылке, которая транслирует аудио файл в плеер(сам код файла, к которому я обращаюсь, написан ниже). Очень важный фактор - аудио файлы около 1 часа и их вес больше 100мб (с файлами по 4 минуты проблем не наблюдается). Все работает, аудио воспроизводится, но:
1. По моей ссылке закачивается только часть файла и после того, как плеер подходит к этой части - воспроизведение обрывается.
2. Если попытаться перемотать файл больше, чем на минуту, то файл прерывается воспроизведение.

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

Сам код:

$file= "https://cs1-48v4.vk-cdn.net/p13/82193c0223859a.mp3?extra=PFQ6YTvJZQsoC4vavjB1rpIS83wlUNo63rvOR5_f9fvNWHsQ6nhuQx8U463GZGQR1TTN6eB7bi_uRxhHbhm1LgjWcUMG99YZlkGFHZyHq16UG_cjDH00RKRPgzQJJbJy4ZizVGiN1cLa";
	$len = get_headers($file,1);
	$heads = getallheaders();

	header("Content-Length:".$len['Content-Length']);
	header("Content-Length:".($len['Content-Length'] - str_replace(array("-","=","bytes"," "), "", $heads["Range"])));
	header("Accept-Ranges:bytes");
	header("Cache-Control:max-age=1468800");
	header("Content-Type:audio/mpeg");
	isset($heads["Range"]) ? (header("Content-Range:" . str_replace("=", " ", $heads["Range"]).($len['Content-Length']-1)."/".$len['Content-Length'])) : header("Content-Range:bytes 0-" . $len['Content-Length']);

	readfile($file);


PS: Я знаю, что ссылка выдается по ip в ВК, ссылку я получал на сам сервер.
  • Вопрос задан
  • 1034 просмотра
Пригласить эксперта
Ответы на вопрос 2
@DuD
Попробуйте таймаут увеличить.
Ответ написан
Denis_Ustinow
@Denis_Ustinow
Вопрос не решен?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы