Я пытаюсь вывести файл mp4 видео через PHP. Когда он используется через флеш-плеер (например, flowplayer), он отлично работает. Но когда я пытаюсь использовать его как источник в теге html5 video или напрямую обращаться к файлу 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 МБ видео.
Наконец, я нашел способ заставить его работать
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); }
в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)
Это может иметь отношение к вашему браузеру и к тому, какой плагин он использует для просмотра видеофайлов, то есть quicktime. Причина, по которой он работает с Flash, – это буферизация флэш-памяти и синхронизация времени и т. Д. Обычно не рекомендуется, чтобы браузер обрабатывал медиафайлы, потому что он полностью зависит от конфигурации браузера и установленных им плагинов.
Некоторые браузеры автоматически загружают медиафайлы, они полностью настраиваются браузером и конечным пользователем.