Подтвердить что ты не робот

Доставка видеороликов MP4 через PHP не выполняется в Google Chrome

В настоящее время я пытаюсь доставить видео MP4 для использования в видео HTML5 (используя видео-js) с помощью PHP script для управления доступом к видео. После некоторых исследований я смог получить эту работу с помощью статьи qaru.site/info/215105/.... Если я перейду к PHP script, я могу просмотреть видео, как если бы я просматривал его по его абсолютному пути (например, localhost/myvideo.mp4, а не localhost/myscript.php) в Firefox, Safari и IE. Моя проблема связана с Google Chrome, который просто показывает черный экран с небольшим медиаплеером в центре и ничего не делает.

Я попытался использовать быструю перезапись, такую ​​как localhost/avideo.mp4, которая маршрутизируется на PHP script, но, к сожалению, это ничего не изменило.

Здесь мой script:

if (is_file($uri)) {
    header('Content-Type: video/mp4');
    if (isset($_SERVER['HTTP_RANGE'])) {
        $this->rangeDownload($uri);
        exit;
    } else {
        header("Content-Length: ".filesize($uri));
        $this->readfile_chunked($uri);
        exit;
    }
} else {
    //error
}

Метод rangeDownload был взят непосредственно из приложения A эта ссылка, как предложено в вышеупомянутой статье stackoverflow.

4b9b3361

Ответ 1

Возможно, проблема связана с URL (точнее, с расширением). Обычно вы используете заголовок Content-Disposition, но я понимаю, что это нежелательно при доставке контента на мобильные телефоны.

Попробуйте использовать localhost/myscript.php/myvideo.mp4

Важно не использовать HTTP-заголовок "Content-Disposition", так как некоторые телефоны отказываются принимать контент при его использовании. Включив имя файла в URL-адрес, вы обманите телефон, чтобы считать его реальным файлом и принять его.

Теперь, когда вы отправляете URL-адрес загрузки клиенту, вы обычно не знаете, какое устройство имеет клиент, поэтому вы не знаете, какие форматы файлов будут поддерживаться устройством. Поэтому вы не можете указать имя файла на этом URL-адресе, и еще раз вам понадобится промежуточная страница загрузки. Еще раз, мы будем использовать URL-адрес, например:

http://wap.mydomain.tld/get.php/123456abcdef

В этот раз, когда клиент подключается для загрузки содержимого, get.php script не создает временный файл, а указывает на другой script, который передает содержимое файла. Предположим, что загружаемый загружаемый контент будет "image.jpg", промежуточная страница загрузки может указывать клиенту на URL-адрес, например:

http://wap.mydomain.tld/download.php/123456abcdef/image.jpg

От (http://mobiforge.com/developing/story/content-delivery-mobile-devices)

Ответ 2

Я понимаю, что вы используете видео-js, но я рекомендую использовать html5media (также проверьте страница github для получения дополнительной информации). Мне нужно было сделать видео на веб-сайте для работы, и я попробовал несколько вещей, включая видео-js, но html5media был единственным, с которым я мог работать во всех браузерах.

Замечание, которое может помочь другим: одно из требований заключалось в том, что мы размещали все файлы, чтобы мы не полагались на сторонние серверы для работы с файлами JavaScript или флеш-плеерами, я не могу вспомнить, с видео -js это было легко, но я знаю, что с html5media нам удалось загрузить flowplayer и иметь все на наших серверах.

И для создания 3-х рекомендуемых видеоформатов (mp4, WebM и Theora) я использовал Miro Video Converter