3

我正在为 iPad 2 创建一个离线 webapp,其中包括视频内容。首次加载页面时,视频显示正常。但是当我重新加载页面时,视频的播放按钮坏了。

我已经进入设置 > Safari > 高级 > 网站数据,果然,视频在缓存中......所以问题似乎是它没有从缓存中检索。

我的 HTML 代码片段:

    <html manifest="cache.manifest">
    ...
        <video width="320" height="240" controls="controls">
            <source src="videos/movie.mp4" type="video/mp4" />
        </video>

我的 cache.manifest 片段:

    CACHE MANIFEST
    # Updated 2012-08-22 19:49:00
    index.php
    ...
    videos/movie.mp4

为了更好地衡量,我的 .htaccess 片段:

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

有没有人有任何想法?

4

2 回答 2

4

不幸的是,这不是答案,但经过 20 小时的连续搜索和测试以解决完全相同的问题,我可以告诉你我现在在哪里。

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

我尝试过制作最小的视频。我已经研究过在本机应用程序中进行包装,但出于交付原因,这不是一种选择。我尝试使用 javascript 在页面加载时强制重新加载视频 .src。我已经尝试了清单文件的所有可能变体。查看了我能忍受的所有 Apple 开发人员文档。

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

抱歉,这不是您所追求的,但希望它可以帮助您指出更少的方向。

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

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

这在 Chrome 中运行良好。当我在 Ipad 上使用它时,优点是我没有将播放按钮划掉,它试图播放然后闪过一条消息,它无法完成此操作。

于 2012-08-22T20:13:28.000 回答
0

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

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

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();

虽然现在我看到这个线程已经有一年了,所以它可能不再是问题了。不过,我想我会发布它。

于 2013-08-05T19:07:58.097 回答