Я пытаюсь создать приложение, в котором я должен передавать медиа-файлы (аудио и видео) в браузер. Я читаю файл через php и отправляю данные в браузер. Я использую следующий код.
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Content-Type: {$file->getMimetype()}"); header("Content-Disposition: inline; filename=".$filename.";"); header("Content-Length: ".strlen($file_content)); echo $file_content;
Все отлично работает, за исключением случаев, когда я пытаюсь переслать видео или аудио (я имею в виду, что текущее место игры – 0:15, и оно напрямую переходит к 1:25), медиа-стопы и когда я снова нажимаю кнопку воспроизведения, это начинается с самого начала.
Я думаю, проблема связана с буферизацией, но не может понять это. Я делаю что-то неправильно в заголовке или что-то еще.
Благодарю.
Я думаю, вам нужно реализовать заголовок Range, чтобы клиент мог перейти к определенной позиции в файле. Возможно, вы узнаете, что пошло не так, обнюхивая запрос , который отправляет игрок.
То, что вы хотите, называется «запросы диапазона контента»,
Посмотрите здесь Возобновляемые загрузки при использовании PHP для отправки файла?
Я натолкнулся на это недавно, что может вам помочь:
http://www.jasny.net/articles/how-i-php-x-sendfile/
Вместо того, чтобы передавать весь файл через PHP (который поглощает память), вы можете использовать x-sendfile. Это модуль Apache, который позволяет запускать программу PHP, но передайте управление на веб-сервер для обработки фактической загрузки файла, как только ваш код выполнит то, что ему нужно сделать (аутентификация и т. Д.).
Это означает, что ваш PHP-код не должен беспокоиться о том, как файл обслуживается; пусть веб-сервер делает то, для чего он предназначен.
Надеюсь, это поможет.
Вот хороший учебник для этого, вам нужен только раздел PHP, но все же: http://www.devshed.com/c/a/PHP/Video-Streaming-PHP-Script-Tutorial/3/