移动 Safari 中的 HTML5 离线视频缓存

Posted

技术标签:

【中文标题】移动 Safari 中的 HTML5 离线视频缓存【英文标题】:HTML5 offline video caching in mobile safari 【发布时间】:2011-02-26 18:24:34 【问题描述】:

我似乎无法让 iPhone 或 iPad 上的 Safari 离线缓存视频。当我离线时,其他所有内容都会很好地缓存。视频文件显然在清单中,但我只是得到了断箭头。在 Safari 桌面上运行良好。有什么线索吗?我已经尝试过对象嵌入和视频标签。

【问题讨论】:

【参考方案1】:

可悲的是there’s a ~5 MB limit on offline cache in Mobile Safari。您对此无能为力。

【讨论】:

但有趣的是,我已经阅读了那篇文章,并且仅使用 960k 的 3gp 视频和一个简单的页面(总共 1mb)进行了测试,但它仍然无法离线播放。这里肯定有其他事情发生。 本周末我在 SO 上发表了其他几篇关于它的文章。事实证明,iPhone / iPad 上的 Safari 不会缓存视频或 wav 文件,即使在清单中也是如此——而且似乎也不会播放数据 URI。似乎您无法在离线模式下使用它们(但是,如果应用程序具有在线访问权限,它将尝试获取它们......)。它在桌面上的 Safari 上运行良好 - 但显然这不是很有用。即使对于非常小的(~5-10k)声音文件也是如此。【参考方案2】:

有关移动浏览器缓存限制,请参阅这两篇文章(注意第二篇添加了重要信息):

http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/

http://www.yuiblog.com/blog/2010/07/12/mobile-browser-cache-limits-revisited/

它一般只涵盖 html 和“外部资源”,但他们没有明确测试视频文件,所以也许这些都不会被 Mobile Safari 缓存。

【讨论】:

【参考方案3】:

音频和视频不会被 iPhone 缓存,因为它们是由外部应用程序播放的。似乎唯一的解决方法是将它们作为 base64 存储在本地数据库中,或者将它们作为 php(或类似)文件缓存在应用程序清单中,但具有 base64 编码的音频和视频内容。

【讨论】:

你试过了吗?在这种情况下,Mobile Safari 会播放音频/视频吗?【参考方案4】:

使用清单缓存包含视频标签的 html 页面,然后告诉您的网络服务器在 30 年后使视频过期。这样视频将在浏览器缓存中,而不是在清单缓存中。

【讨论】:

【参考方案5】:

iPad 上的 ios 4.3 更新:

我刚刚尝试在 iOS 4.3 中将电影添加到清单文件中。

Safari 要求我允许扩展离线存储,然后下载电影。

【讨论】:

嗯。 iPad 下载了电影(也可以在网络服务器的日志中看到),但它似乎没有存储它,因为它在 iPad 处于飞行模式时不会播放。【参考方案6】:

也许这样的事情会起作用:http://www.nihilogic.dk/labs/jsvideo/test2.php

【讨论】:

【参考方案7】:

我已阅读它需要一个 html5 清单设置来缓存文件

【讨论】:

清单已正确定义并且可以正常工作,因为其他所有内容都正确缓存,只是这些该死的视频。离线视频缓存不在规范中吗?到处都找不到。 我开始认为 HTML5 不支持离线视频缓存,但后来我听说其他网站也在做类似的事情(Youtube?)。有人知道他们是怎么做到的吗?

以上是关于移动 Safari 中的 HTML5 离线视频缓存的主要内容,如果未能解决你的问题,请参考以下文章

移动 safari 似乎在导航后卸载 html5 音频/视频

移动 Safari 上的 iOS html5 视频

HTML5 视频标签在移动 Chrome 上的奇怪行为,但适用于 SAFARI

在不使用海报的情况下,HTML5 视频标签在移动 Safari 上不显示缩略图

利用HTML5开发移动应用都有哪些优点

HTML5 离线缓存详解(转)