【发布时间】:2015-08-27 10:43:26
【问题描述】:
我有大约 125MB 的视频文件需要从扩展文件 (OBB) 播放。 OBB 文件本身就位并使用3rd party native extension 成功“挂载”,因此我可以使用传统方法访问文件,例如 File 类、Loader 类等。
我使用 NetStream 和 NetConnection 类来播放视频文件,但问题是要播放流,视频文件需要与尝试播放它的 SWF 位于同一文件夹(或子文件夹) )。这也在 Adobe 文档中:
播放本地文件
在 Flash Player 和应用程序安全之外的 AIR 内容中 沙盒,可以播放存储在同一个本地的视频文件 目录作为 SWF 文件或在子目录中;但是,你不能 导航到更高级别的目录。
不过,出于好奇,我还是尝试播放该流,但它会引发 StreamNotFound 错误(应该如此,因为视频文件与 SWF 不在同一个文件夹/子文件夹中)。我的直觉是,这是一些安全沙盒的东西,有办法绕过它,但我找不到。
感谢任何帮助。
【问题讨论】:
-
如果是安全沙盒问题,它会告诉您。我的猜测是它无法发现该文件。我不知道您所说的“已安装”是什么意思,但 obb 文件只是一个 zip 文件,因此它应该简单地在应用程序安全沙箱树中解压缩,以便可以访问它的文件。如果你做任何其他事情,你只是在找麻烦。
-
据我所知,OBB 文件是我想要的。所以我使用 Android SDK 中的“jobb”命令行工具来创建 OBB 文件。我使用的 ANE 使我能够在不打开包装的情况下访问 OBB,从而为所有意图和目的“安装”它。如果我将其解压缩到任何可写文件夹中,NetStream 仍然无法播放该文件,因为视频文件仍然不会与 SWF 位于同一文件夹中。不过,我会探索一下。谢谢。
-
这种方法的问题在于,OBB 的位置可能会因设备而异,并且无法保证用户无法通过简单地进行某种清理来删除它。这就是为什么至少建议将该文件移动到一个安全的位置开始,甚至更好地将其解压缩到正确的位置。就我个人而言,我在应用程序根目录中查找我的文件,如果它们不存在,我会在我的 OBB 中找到它们,然后我将它们复制到我的应用程序根目录中。用户永远不必等待任何东西,过了一会儿我所有的文件都在根目录下。
-
谢谢,我知道它是如何工作的,但是所有的解包/复制不会增加应用程序使用的空间吗?我的应用程序大约 300MB,因此任何解包都需要相同数量的空间。所以安装我需要大约 600MB。另外,Google 明确不建议删除和删除 OBB 文件:developer.android.com/google/play/expansion-files.html#Rules Google 也明确建议:'但是,如果可能,最好使用允许您直接从文件中读取的扩展文件格式,而不是要求您解压数据'
-
@Nedudgi 你能告诉我你是如何将扩展添加到 adobe flash 的吗?我是 adobe 新手,想测试一下,谢谢。
标签: actionscript-3 flash video air apk-expansion-files