Как избежать повторной загрузки HTML-видео на той же странице? - PullRequest
18 голосов
/ 12 августа 2011

Использование одного и того же видео дважды на одной и той же странице, по-видимому, вызывает ненужную перезагрузку мультимедиа.

Сравните загрузку видео с загрузкой изображения:

<img src="image.png"/>
<img src="image.png"/>
<video src="video.webm"></video>
<video src="video.webm"></video>

По данным веб-браузера Firefox 5консоль, это загружает изображение один раз, но видео дважды.

Из http://www.w3.org/TR/html5/video.html#dom-media-mediagroup я понимаю, что авторы спецификации ожидали одну перезагрузку в обоих случаях («Несколько медиа-элементов, ссылающихся на один медиа-ресурс, будутподелиться одним сетевым запросом "), но это не происходит со мной.

Я пытался поиграться с параметрами кэша сервера (я использую vanilla web.py), но безрезультатно, и я подозреваю,это лает не на то дерево.Есть ли что-то конкретное, на что я должен смотреть?HTML-метаэлементы?

Обратите внимание, что это противоположно распространенным проблемам, связанным с наличием нескольких источников для одного и того же видео.Здесь меня интересует, чтобы несколько видеоэлементов с одним и тем же источником воспроизводились рядом (например, в разные моменты времени).

Ответы [ 6 ]

1 голос
/ 31 декабря 2011

Я думаю, что люди неправильно читают спецификацию здесь.

Если вы посмотрите на пример в спецификации, они конкретно говорят об одном ресурсе (файле), который содержит несколько треков.Два видеоэлемента содержат ссылку на один и тот же файл, но разные дорожки в этом файле.Эти две дорожки затем воспроизводятся синхронно с помощью медиа-группы.

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

Если два видео не будут воспроизводитьсяпри синхронизации нецелесообразно ожидать, что браузер загрузит два видео по одному набору запросов.Обратите внимание, что это набор запросов, видео может генерировать много запросов к серверу, так как видео или мультимедийный сеанс (например, остановка, пауза и перезапуск) могут быть значительно длиннее, чем сервер или клиент желает держать открытым одно соединение.

Представьте, если два элемента имеют разные элементы управления.Вы приостанавливаете первое видео и оставляете воспроизведение второго.Проходит 30 минут, и вы перезапускаете первое видео.Браузер просто не собирается кэшировать то, что может составлять более ста мегабайт контента с сервера, чтобы позволить ему воспроизводить первое видео без отправки нового запроса на сервер.

Если вы ожидаете два дискретныхфрагменты потокового контента для отправки по одному соединению с использованием HTTP, тогда я не верю, что это возможно (ну, в настоящее время реализовано).Это будет мультиплексирование, и последнее, что я проверял, HTTP-серверы не поддерживают мультиплексирование.Обратите внимание, что это отличается от соединения поддержания активности, когда несколько частей контента обслуживаются последовательно, мультиплексирование описывает то, что несколько частей контента обслуживаются параллельно.Обычный способ добиться этого - просто открыть два сокета, и клиенту, и серверу гораздо проще иметь дело с этим, чем пытаться демультиплексировать один поток.

1 голос
/ 31 декабря 2011

Работа:

<video id="video" class="videohtml5" width="720" height="500" controls="controls" preload="auto" poster="">  
      <source src="path(1)"  />  
      <source src="path(2)" />  
      <source src="path(3)"  />  
</video>
1 голос
/ 28 декабря 2011

Если вы используете HTML 5, то лучше использовать Canvas.Загрузит видео один раз.

1 голос
/ 10 октября 2011

Если вы проверите размер загруженного видео, они оба загружают полное видео?

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

Я провел несколько тестов в июне с помощью Брюса Лоусона, и мы обнаружили, что некоторые браузеры выполняют даже больше нагрузок, чем два, которые я описал выше.

HTML 5 видео в реальной жизни (тесты)

0 голосов
/ 06 декабря 2011

Похоже, что это ошибка в браузере, который вы используете, так как он явно не соответствует спецификации W3C HTML 5.Я бы порекомендовал вам отправить отчет об ошибке для разработчиков этого браузера и проверить, как это поведение сравнивается с другими браузерами.

0 голосов
/ 10 октября 2011

Конечно, вы можете поместить видео в миниатюры и загружать их, когда кто-то нажимает на них, это может помочь, если вы не можете найти что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...