Intereting Posts
порядок строк при вставке многострочных строк в MySQL php: echo ('x' == 0) печатает 1 (true). это верно? PHP создает изображение для отображения адреса электронной почты? Как поделиться моделью Symfony2 с несколькими проектами Как получить запрос, выполненный в Laravel 5? DB :: getQueryLog возвращает пустой массив Как обратиться к public_html корневому файлу, используя include, после того, как вы перейдете к одной файловой директории из public_html Как удалить глобальный пакет из Composer? обрабатывать несколько запросов по почте на тот же URL-адрес Laravel 5 Доступ к файлам сервера Wamp с помощью имени компьютера, установленного локального IP-адреса. Приложение Android Перенесите сайт Symfony2 на localhost с веб-сервера Как запустить Java-программу и получить выход на PHP? Как заменить «\» на str_replace () в PHP? Почта PHP перестала работать Плагин xdebug vim не показывает значения переменных (php) Загрузка файла конфигурации .user.ini PHP с использованием внутреннего сервера PHP 5.4?

Файл mp4 через php не воспроизводится как html5 video

Я пытаюсь вывести файл 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, – это буферизация флэш-памяти и синхронизация времени и т. Д. Обычно не рекомендуется, чтобы браузер обрабатывал медиафайлы, потому что он полностью зависит от конфигурации браузера и установленных им плагинов.

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