MP4 файл через php не воспроизводится как видео html5
Я пытаюсь вывести MP4 видео файл через PHP. Когда он используется через флеш-плеер (например, flowplayer), он работает отлично. Но когда я пытаюсь использовать его в качестве источника для видео-тега html5 или для непосредственного вызова php-файла, это не работает.
Я использую следующий код:
$filesize = filesize($file);
header("Content-Type: video/mp4");
if ( empty($_SERVER['HTTP_RANGE']) )
{
header("Content-Length: $filesize");
readfile($file);
}
else //violes rfc2616, which requires ignoring the header if it's invalid
{
rangeDownload($file);
}
а также rangeDownload
Функция взята из http://mobiforge.com/developing/story/content-delivery-mobile-devices Приложение A.
Даже когда я использую Content-Range
заголовок (Content-Range:bytes 0-31596111/31596112
), он зависает при загрузке 30,13 МБ видео.
2 ответа
Наконец-то я нашел способ заставить это работать
header("Content-Type: $mediatype");
if ( empty($_SERVER['HTTP_RANGE']) )
{
header("Content-Length: $filesize");
$fh = fopen($file, "rb") or die("Could not open file: " .$file);
# output file
while(!feof($fh))
{
# output file without bandwidth limiting
echo fread($fh, $filesize);
}
fclose($fh);
}
else //violes rfc2616, which requires ignoring the header if it's invalid
{
rangeDownload($file);
}
Он работает по прямой ссылке в php-файле и внутри видео-тега html5.
Но чтобы работать в Flowplayer (и, возможно, в других проигрывателях flash/html5), вам нужно добавить расширение mp4 (например, view.php? Id=XXX&file=type.mp4)
Это может быть связано с вашим браузером и тем, какой плагин он использует для просмотра видеофайлов, т.е. Причина, по которой он работает с Flash, заключается в том, что flash обрабатывает буферизацию и синхронизацию времени и тому подобное. Обычно не рекомендуется разрешать браузеру обрабатывать медиафайлы, поскольку это полностью зависит от конфигурации браузера и установленных им плагинов.
Некоторые браузеры автоматически загружают медиа-файлы, это полностью настраивается браузером и конечным пользователем.