android - 在 PhoneGap/Chrome 应用程序中存储视频以供离线使用

标签 android ios html cordova google-chrome-app

我有一些简单的视频播放应用程序,它们都是由 PhoneGap 和 Chrome Apps CLI(都使用 Cordova)设置的,它们包含一堆简短的教育视频,并且需要作为 Android/iOS 上的网站和应用程序供离线使用。

到目前为止,我发现 Chrome Apps bundle 文件的总大小不能超过 10mb,PhoneGap Build 不能超过 40mb - 因此两者都需要在本地下载和存储文件以备后用。 视频将需要从 WebView 浏览器中打开和播放 - 热点触发 JS 更改 HTML5 视频源。 (AppCache 和其他 HTML5 存储对于移动设备来说是不可能的,它们似乎永远无法达到三位数的存储空间)

有没有人幸运地使用了某个可以在本地存储文件以实现此规范的 Cordova/PhoneGap/Chrome App API?

感谢任何建议/帮助/指向正确方向!

最佳答案

您可以在 Cordova 应用程序中执行此操作(很快就会在 Chrome Cordova 应用程序中执行)。您需要最新版本的文件 (1.0.1) 和文件传输 (0.4.2) 插件。

有了这些,您可以使用 FileTransfer.download()下载视频,您可以使用文件访问文件并创建一个 <video>标签播放视频。

您需要使用 .toNativeURL()播放文件条目之前的方法。文件插件的最新版本使用自定义 URL 方案的文件,不幸的是与 HTML 不兼容 <video>标签。

这是我用来测试这些方法交互的测试代码:

var filename = "small.mp4";
var videoURL = "http://techslides.com/demos/sample-videos/small.mp4";

requestFileSystem(PERSISTENT, 0, function(fileSystem) {
    var ft = new FileTransfer();
    ft.download(videoURL, fileSystem.root.toURL() + "/" + filename, function(entry) {
        var videoElement = document.createElement('video');
        videoElement.controls = 'controls';
        videoElement.src = entry.toNativeURL();
        document.videoElementById("output").appendChild(imgElement);
    });
});

更新

使用最新版本的文件插件 (1.1.0),您不再需要使用 .toNativeURL()获取可用作 src 的 URL视频的属性。标准.toURL()方法将返回这样一个 URL。

关于android - 在 PhoneGap/Chrome 应用程序中存储视频以供离线使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22047752/

相关文章:

android - 这两个按钮有什么区别?安卓编程

javascript - 我在哪里可以将文件名存储在 html 的 li 标签中?

android.os.Parcel.createException 接收者太多,一共1000个,

android - 添加 fragment 作为 ListView header

iphone - iPhone 上 UIBarButtonItems 之间的默认空间

javascript - 如何在 objective-c 中实现 back4app.com 上的 javascript 代码

html - SVG 悬停填充在 FireFox 中不起作用

c# - 从代码隐藏 (.NET) 访问 html 表循环内的复选框

android - Sugar ORM SUM 一列

ios - 无法从 swift4.2 的数据源获取单元格