在应用程序包中发送包含数千个音频文件的 zip

Posted

技术标签:

【中文标题】在应用程序包中发送包含数千个音频文件的 zip【英文标题】:Shipping zip with thousands of audio files within app bundle 【发布时间】:2012-03-31 18:25:55 【问题描述】:

我正在开发学习外语的应用程序,我需要在我的应用程序中发送 80000 个小音频文件。

为了减小我的应用程序的大小,我决定将其中的一部分放在捆绑包中,放在 zip 存档中,然后将其解压缩到文档目录。然后,等 iPhone 接入 Wi-Fi 网络后,我会一点一点的下载其他的。

但问题是 Apple 说,我们不允许在 Documents Directory 中存储大文件。标记文件不备份仅从 5.0.1 开始工作

所以我认为有两种方法:

    发送所有文件而不压缩它们并将它们存储在应用程序包中——但这太大了。 发送一个 zip,将其解压缩到缓存目录,然后检查它们是否(未被系统删除),如果已删除,则下载一个。

我应该选择什么,或者有其他方法可以解决吗?

【问题讨论】:

无法启动服务器,需要文件时下载。由于它们是小音频文件,因此下载时间不会太长。然后在应用关闭后删除音频文件以节省空间。 删除?他们的总大小是 70 兆字节) 在这种情况下,不要删除。我假设每个文件的“小”是 0.5MB 左右。 每个4-10公斤,但有几千个 【参考方案1】:

压缩音频文件不是一个好方法。我确信节省的空间不会发挥任何作用。

最好的解决方案是使用 AAC 编码的音频文件。 在 64-128 kbps 之间选择合适的质量。并且可能是单声道。

iPhone 3G 及更高版本对此编解码器具有硬件支持。

【讨论】:

感谢您的回复,但我已经为这些文件找到了最低质量的文件。压缩有什么问题? 已压缩的编码音频文件。如果您使用 aac-files 检查 zip 大小和文件夹的大小,则差别不大。【参考方案2】:

如果您只是将应用程序包中的文件解压缩到文档目录,那么在应用程序包中压缩文件没有多大意义。当应用程序包从应用程序商店交付到 ios 设备时,它们无论如何都会被压缩(.ipa 文件),因此解压缩到文档将使您的应用程序实际上占用用户设备上更多的空间(一次在应用程序包中,一次在文档目录)。

自动化方式: 如果您想在不使用太多文档空间的情况下下载它们,您可以编写一个具有最大允许大小的预测缓存。您可以跟踪上次访问每个文件的时间以及何时需要下载新文件,删除最早访问的文件,直到您有足够的空间。您的应用可以根据课程进度预测接下来需要哪些文件,但即使他们访问不存在的文件,您也可以及时下载并将其添加到缓存中以供将来重复使用。

手动方式: 您可以提供一个用户界面来向用户显示不同课程正在使用多少空间并将其拆分为课程包。允许用户控制哪些包保持缓存并显示它们使用了多少空间。他们可以在学习过程中决定何时下载新包以及何时删除旧包(如果他们想节省空间)。如果用户想要将文件保存在本地,那么您应该让它们保留,即使它使用大量文档空间。

【讨论】:

以上是关于在应用程序包中发送包含数千个音频文件的 zip的主要内容,如果未能解决你的问题,请参考以下文章

如何将lorawan中的数千个数据点发送到单个数据包中?

在Web应用程序部署过程中将数千个文件部署到FTP

在 xcode for iOS 应用程序中存储数千个文件(在包内)

在Java中有效地读取zip文件

复制不适用于包含音频/视频文件的 CouchDB 数据库

linux如何删除zip包中某个文件夹及里面的内容