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>

缓存清单示例.appcache看起来像:

CACHE MANIFEST
index.html
railer.mp4
background.jpg
NETWORK:
*

有人通过缓存清单为android浏览器提供离线视频缓存吗?

我曾尝试在Android 4.1.2上使用默认浏览器和Chrome 27.0缓存视频(mp4格式)和音频(mp3格式)文件,但正如你在文章中提到的,尽管它缓存了这些元素,但它没有在离线模式下播放视频和音频。

问题是HTML5离线规范中没有指定AppCache的最大大小。互联网上的各种帖子显示了离线存储的不同配额限制。

在StackOverflow上,关于缓存的最大文件大小问题也存在很多问题:

  • HTML5清单有大小限制吗
  • 如何在HTML5';中存储50MB视频;s应用程序缓存

我认为可以肯定的是,可用的最大配额在很大程度上取决于浏览器和平台,有时甚至取决于可用空间。

有可用的工具http://demo.agektmr.com/storage/(在本文中找到),允许检查设备上可用的最大配额。也许当你检查它时,你会发现你想要缓存的视频的文件大小对你的设备来说太大了。

TL;DR提到的消息来源让我得出了以下答案:根据浏览器、平台和运行环境,(有时)可以将视频存储到有限的文件大小。但不能保证它会被正确缓存(至少如果它不够小的话)。

我已经包含了一个关于如何缓存HTML5视频以便在使用应用程序缓存或Service Worker时离线使用的基本示例(src)。

存储视频以供离线使用

  1. 获取视频作为数组缓冲区
  2. 将数组缓冲区存储在IndexedDb中
  3. 将数组缓冲区转换为blob
  4. 将blob分配给视频的源
  5. 脱机时,从IndexedDB获取视频源

如果你愿意的话,在线时也可以从IndexedDB中获取视频的来源。

最新更新