Может ли Android кэшировать видео HTML5 с манифестом кеша в автономном режиме?

У меня есть пример, который отлично кэшируется на Chrome и отображает видео в автономном режиме.

Когда я пробую этот пример с планшетом Android 3.2 и 4.x, видео будет воспроизводиться только в сети, но не в автономном режиме, хотя другие элементы, такие как файл HTML и фон, присутствуют в автономном режиме.

<!DOCTYPE html>
<html manifest="example.appcache">
    <head>
        <title>Hello Video!</title>
        <style>
        body{ background: url('background.jpg');}
        </style>
    </head>
    <body>
        <video width="855" height="480" controls="">
            <source src="railer.mp4"/>
        </video>
    </body>
</html>

И манифест кеша example.appcache выглядит так:

CACHE MANIFEST

index.html
railer.mp4
background.jpg

NETWORK:
*

Кому-нибудь удалось заставить работать автономное кеширование видео для браузеров Android через cache-manifest?


person alarmatwork    schedule 08.02.2012    source источник
comment
Вы когда-нибудь решали свою проблему? @alarmatwork   -  person Odin    schedule 10.03.2014
comment
@ alarmatwork, просмотрите: stackoverflow.com/a/42379075/1911755   -  person Raphael Rafatpanah    schedule 22.02.2017


Ответы (3)


Я пытался кэшировать видео (формат mp4), а также аудио (формат mp3) на Android 4.1.2, используя браузер по умолчанию, а также Chrome 27.0, но, как вы упомянули в своем сообщении, хотя он кэшировал эти элементы, он не воспроизводил видео и аудио в автономном режиме.

person Goku    schedule 30.05.2013

Проблема в том, что максимальный размер AppCache не указан в офлайн-спецификации HTML5. Разное сообщений в Интернете показывают различные ограничения квот для автономного хранилища.

В StackOverflow также существует много вопросов по вопросу о максимальном объеме кеша. размер файла:

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

Доступен инструмент http://demo.agektmr.com/storage/ (находится в этом < href = "http://www.html5rocks.com/en/tutorials/offline/quota-research/" rel = "nofollow noreferrer"> статья), которая позволяет проверить максимальную квоту, используемую на вашем устройстве. Возможно, когда вы посмотрите это, вы обнаружите, что размер файла видео, который вы хотите кэшировать, слишком велик для вашего устройства.

TL; DR Упомянутые источники приводят меня к следующему ответу: (иногда) возможно хранить видео размером до ограниченного размера, в зависимости от браузера, платформы и рабочей среды. Но нет никакой гарантии, что он будет правильно кэширован (по крайней мере, если он недостаточно мал).

person Briareos386    schedule 24.09.2014
comment
В моем случае я подтвердил, что видеофайлы были сохранены в браузере (а мои видеофайлы в любом случае имеют размер от 1 до 3 МБ), но они по-прежнему не воспроизводятся, когда браузер находится в автономном режиме. - person rdans; 24.09.2014
comment
О, у вас есть браузер для кэширования видео (т.е. сохранения в хранилище), но он не загружает кешированный файл? Что ж, для меня это больше похоже на ошибку браузера, чем на ограничение функции appcache. - person Briareos386; 24.09.2014

Я включил простой пример (src) о том, как кэшировать видео HTML5 для использования в автономном режиме при использовании Application Cache или Service Worker.

Чтобы сохранить видео для использования в автономном режиме

  1. получить видео как буфер массива
  2. хранить буфер массива в IndexedDb
  3. преобразовать буфер массива в большой двоичный объект
  4. Назначьте большой двоичный объект источнику видео
  5. В автономном режиме возьмите источник видео из IndexedDB.

При желании вы также можете получить источник видео из IndexedDB, когда он находится в сети.

person Raphael Rafatpanah    schedule 21.02.2017