Видео html5 воспроизводится только один раз при потоковой передаче через контроллер в chrome и вообще не воспроизводится в ipad - PullRequest
3 голосов
/ 02 марта 2012

Я пытался использовать тег видео html5 на моей веб-странице. Я использую хром на десктопе и сафари на iPad. Он работает нормально, когда в теге source я указываю URL-адрес реального файла mp4, но если я указываю URL-адрес моего контроллера / сервлета, то - в Chrome видео воспроизводится только один раз, и после этого вы даже не можете использовать панель поиска или воспроизвести видео снова, нажав кнопку воспроизведения. - на сафари в iPad видео вообще не загружается

В моем контроллере я устанавливаю тип контента как "video / mp4" и тоже устанавливаю свойство content-length. Не уверен, почему это не работает. Все хорошо работает на Firefox и Safari на рабочем столе.

Любая помощь будет принята с благодарностью. Спасибо в ожидании.

Вот код:

Рабочая:

<video controls="controls" width="700" height="390" class="myVideo">
          <source src="http://example.com/fileName.mp4" type="video/mp4"/>
          <source src="http://example.com/fileName.ogv" type="video/ogg"/>
</video>

Не работает:

<video controls="controls" width="700" height="390" class="myVideo">
          <source src="http://example.com/servletName?type=mp4" type="video/mp4"/>
          <source src="http://example.com/servletName?type=ogv" type="video/ogg"/>
</video>

1 Ответ

5 голосов
/ 26 июля 2012

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

public function videos($name, $extension, $format = null) {
    $format = is_null($format) ? $extension : $format;
    $file = file_get_contents(FCPATH . APPPATH . "resources/videos/{$name}.{$extension}");
    header("Content-length: ".strlen($file));
    // header('Content-Transfer-Encoding: binary');
    header("Content-Type: video/{$format}");
    echo $file;
}

В Firefox и Safari видео воспроизводится хорошо.На Chrome он проигрывается только один раз, без возможности использовать панель поиска.На iPad это не играет вообще.

ОБНОВЛЕНИЕ

ЭЙ !!!Я только нашел способ заставить это работать.Вы должны отправить заголовок "Accept-Ranges: bytes" !!!

PHP

header("Accept-Ranges: bytes");
...