【发布时间】:2013-02-24 19:36:31
【问题描述】:
我知道在 SO 上已经有一些类似的问题,但它们与在播放之前提取文件有关。
在 Android 文档 here 中解释说,您可以直接从 .zip 文件播放文件而无需解压。
提示:如果您要将媒体文件打包成 ZIP,您可以使用 media 播放带有偏移和长度控制的文件调用(例如 MediaPlayer.setDataSource() 和 SoundPool.load()) 无需 解压缩您的 ZIP。为了使它工作,你不能执行 创建 ZIP 时对媒体文件进行额外压缩 包。例如,使用 zip 工具时,应使用 -n 用于指定不应压缩的文件后缀的选项:
zip -n .mp4;.ogg main_expansion media_files
我制作了一个(未压缩的)zip 包,但我不知道如何从ZipEntry 到FileDescriptor,他们也没有进一步解释。如何在不解压缩 zip 文件的情况下获得FileDescriptor?
【问题讨论】:
-
zip file format 使用相当简单的内部文件结构。头指向数据,所以你只需要寻找文件头,然后使用
Relative offset of local file header和Compressed size找到数据的开始和它的长度。你也应该至少检查Compression method以确保文件未压缩,只要它没有压缩,使用数据,否则先解压缩数据,然后使用它。 -
压缩方法是
store使用7zip,.zip 文件的大小等于解压缩文件的总和,所以我认为我已经正确压缩了它们。除此之外,我不知道你在说什么:P -
不久前我遇到了同样的问题,但没有任何运气让它工作。您可以查看这些问题了解更多详情:stackoverflow.com/questions/12863731/…stackoverflow.com/questions/12920429/…
标签: android zip android-mediaplayer