2010-09-24 1 views
7

Я пытаюсь создать приложение, в котором я должен передавать медиафайлы (аудио и видео) в браузер. Я читаю файл через php и отправляю данные в браузер. Я использую следующий код.Как передать медиафайл с помощью 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), останавливается медиа и когда я снова нажмите кнопку воспроизведения, она начинается с начала.

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

Спасибо.

+0

Я предпочитаю Flash-streaming;), less filesize = более быстрая загрузка. Также проще интегрироваться в веб-сайт. – Jordy

+3

@Jordy AFAIK Flash не выполняет потоковое воспроизведение сервера. Вам все еще нужен сценарий на стороне сервера для потоковой передачи flv, иначе вам придется ждать загрузки всего файла, прежде чем вы сможете его просмотреть. –

+1

folow, что вы можете перемотки вперед: __http: //codesamplez.com/programming/php-html5-video-streaming-tutorial__ – vuhung3990

ответ

5

Я думаю, вам нужно реализовать заголовок Range, чтобы клиент мог перейти к определенной позиции в файле. Вероятно, вы можете узнать, что пошло не так, sniffing the request, который отправляет игрок.

+0

Является ли это собственностью игроков, чтобы отправить какую позицию искать, я имею в виду, что мне нужно установить te script в игрок должен указать позицию поиска и отправить затем на сервер. –

+0

ссылка сейчас мертва. –

+0

Но архив работает: https://web.archive.org/web/20111207023157/http://linuxonly.nl/docs/38/122_Introduction.html – hakre

1

Я наткнулся на это в последнее время, которые могут помочь вам:

http://www.jasny.net/articles/how-i-php-x-sendfile/

Вместо прохождения всего файла через PHP (который съедает память), вы можете использовать й-SendFile. Это модуль Apache, который позволяет запускать программу PHP, но передайте управление на веб-сервер для обработки фактической загрузки файла, как только ваш код выполнит то, что ему нужно сделать (аутентификация и т. Д.).

Это означает, что ваш PHP-код не должен беспокоиться о том, как файл обслуживается; пусть веб-сервер делает то, для чего он предназначен.

Надеюсь, что это поможет.