嵌入式HTML 5视频存储在缓存中,但不会显示在iPad 2上

嵌入式HTML 5视频存储在缓存中,但不会显示在iPad 2上,ipad,html,caching,video,offline,Ipad,Html,Caching,Video,Offline,我正在为iPad2创建一个离线网络应用程序,其中包括视频内容。第一次加载页面时,视频显示良好。但当我重新加载页面时,视频的“播放”按钮会断开 我进入了设置>Safari>高级>网站数据,果然,视频在缓存中。。。因此,问题似乎是没有从缓存中检索到它 我的HTML代码片段: <html manifest="cache.manifest"> ... <video width="320" height="240" controls="controls"&

我正在为iPad2创建一个离线网络应用程序,其中包括视频内容。第一次加载页面时,视频显示良好。但当我重新加载页面时,视频的“播放”按钮会断开

我进入了设置>Safari>高级>网站数据,果然,视频在缓存中。。。因此,问题似乎是没有从缓存中检索到它

我的HTML代码片段:

    <html manifest="cache.manifest">
    ...
        <video width="320" height="240" controls="controls">
            <source src="videos/movie.mp4" type="video/mp4" />
        </video>
为了更好地衡量,我的.htaccess代码段:

    AddType text/cache-manifest .manifest
    AddType video/mp4 .mp4

有人有什么想法吗?

不幸的是,这不是答案,但经过20小时的不断搜索和测试,我可以告诉你我现在在哪里

这似乎是一个ipad iOS特有的问题,无论视频/声音文件大小如何,它都不会在缓存的文件上绘制,尽管它们显然是缓存的,并且在第一次加载时它会播放文件OK

我试着制作尽可能小的视频。 我已经考虑过在原生应用程序中进行包装,但出于交付原因,这不是一个选项。 我已经尝试使用javascript在页面加载时强制重新加载video.src。 我已经尝试了清单文件的所有可能的变体。 看了所有我能忍受的苹果开发者文档

在阅读了数百篇从未真正完成的帖子后,我认为除了让客户购买安卓平板电脑之外,答案是使用本地数据库以二进制形式存储视频,以便在应用程序需要时检索。不幸的是,我仍在寻找这方面的例子,但还没有找到任何与任何细节。文本/数字数据的本地保存不是问题。我只是不知道是否有可能存储原始文件数据并在本地数据库中检索它

对不起,这不是你想要的,但希望它能帮你找到更多的方向

更新,但进展不大。我决定使用base64 ecoded mp4并将文本粘贴到一个简单的xml文件中。我的应用程序将读取此xml视频数据,并在视频标记SRC中使用。这是大约4MB的字符串

SRC="data:video/mp4;base64,AAAAA /...../ AA" 

这在铬合金中工作得很好。当我在Ipad上使用它时,好的方面是我从来没有划掉播放按钮,它尝试播放,然后闪现一条消息,它无法完成此操作

我在iPad上播放视频时遇到了一些相关问题。这是一个HTML小部件,它将驻留在iBooks文件中。我的问题是我无法让视频倒带,所以当你返回到屏幕时,视频在最后被卡住了(如果你返回的速度足够快,视频仍在播放)

我想出的解决办法是加载不同的视频,然后重新加载我想播放的视频。这是丑陋的,但它是有效的,它可能会为你的问题提供一个解决办法

var sources = videoEl.getElementsByTagName('source');
sources[0].src = "assets/TeethMouth_Anim_Part3_03.mp4"; // Load some other video into the source, in my case, a video that I'm playing later in the presentation.
videoEl.load();
sources[0].src = "assets/TeethMouth_Anim_Part1_03.mp4"; // Then reload the video I want to play.
videoEl.load();

虽然现在我看到这个帖子已经有一年了,所以它可能不再是一个问题了。不过,我还是想把它贴出来。

当我进入飞行/离线模式时,这个问题也会发生(可以预见)。视频大小为311KB。我的iPad运行的是iOS 5.1.1。非常感谢你的回复——至少我知道我不是一个人!我尝试将视频转换为Base64,然后将Base64数据保存在缓存中(扩展名为.php),但没有成功。我也尝试过用JavaScript创建视频元素,但在iPad上也不起作用。我也尝试过使用Base64数据作为src属性的值,但iPad没有乐趣。我还要看一看数据库建议…有人知道如果我使用PhoneGap将webapp包装为本机应用程序,这个问题是否会被克服吗?我已经看过了,但对我来说这不是一个选项,所以没有尝试过。我想它会工作,虽然你不会缓存文件使用清单,他们将在应用程序内。完成后,我将发布本地数据库工作的结果,希望能够正常工作。今天,我决定将目标设备切换到Android平板电脑。我仍然有同样的问题,视频无法存储或从缓存中检索。幸运的是,有了Android,使用PhoneGap将其转化为本地应用程序是一个相当容易的飞跃——所以我的钱现在就在上面。有趣的是,为了让缓存在Android上工作,在cache.manifest文件中,在“cache manifest”行之后,您需要一个“cache:”行。我还没有在iOS上尝试过,但也许这行代码可以帮助您检索视频?
var sources = videoEl.getElementsByTagName('source');
sources[0].src = "assets/TeethMouth_Anim_Part3_03.mp4"; // Load some other video into the source, in my case, a video that I'm playing later in the presentation.
videoEl.load();
sources[0].src = "assets/TeethMouth_Anim_Part1_03.mp4"; // Then reload the video I want to play.
videoEl.load();