Може ли 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 чрез кеш-манифест?


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/ (намира се в този статия), която позволява да проверите максималната използваема квота на вашето устройство. Може би, когато го проверите, ще разберете, че размерът на файла на видеото, което искате да кеширате, е твърде голям за вашето устройство.

TL;DR Споменатите източници ме водят до следния отговор: Възможно е (понякога) да съхранявате видеоклип до ограничен размер на файла, в зависимост от браузъра, платформата и работната среда. Но няма гаранция, че ще се кешира правилно (поне ако не е достатъчно малък).

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

Включих голи кости пример (src) за това как да кеширате HTML5 видеоклип за използване офлайн, когато използвате кеш на приложения или Service Worker.

За да съхраните видеоклипа за офлайн употреба

  1. извлечете видеото като буфер на масив
  2. съхранява буфера на масива в IndexedDb
  3. преобразувайте буфера на масива в петно
  4. Присвоете петното към източника на видеоклипа
  5. Когато сте офлайн, вземете източника на видеоклипа от IndexedDB

Можете да вземете източника на видеоклипа от IndexedDB и когато сте онлайн, ако желаете.

person Raphael Rafatpanah    schedule 21.02.2017