1

需要实现一个具有播放声音功能的应用程序。每个声音都会是一些单词声音,预期声音的数量大约是一千个。因此,最简单的解决方案是将这些声音存储为声音文件,将每个单词的声音存储在单独的声音文件中,然后按需播放。如此大量的文件会有任何潜在的问题吗?

4

3 回答 3

1

您应该可以在 IPA 中存储 1000 个音频剪辑文件,但重要的是要注意空间要求和组织。

还要考虑到访问磁盘比内存慢的事实,它还占用电池空间,因此将最常用的音频剪辑加载到内存中是理想的选择。

于 2012-12-11T12:55:20.310 回答
1

这么多文件没问题,但它们会占用比它们的总大小更多的空间。每个文件将填满设备上的整个 # 空间块。平均而言,您将浪费半个块(根据经验),除非您的所有文件都明显小于一个块,在这种情况下,您将始终使用 1.000 个块(一个 pr. 文件)并浪费 1000 *(块大小 - 平均文件大小)。

你可以做的事情:

将文件连接成一个大文件,存储每个子文件的开始和长度,将块读入内存或复制到临时文件。

将数据库中的文件作为 BLOB 字段删除,以便于检索。这不会节省空间,但可能会使您的代码更简单或更可靠。

我认为您不需要制作自己的缓存机制。很可能 iOS 有一个系统范围的缓存,它做得更好。只有当您遇到性能问题并且需要更短的加载时间时,这才应该是相关的。在这种情况下,可以考虑使用块来加载和调度播放,因为这是隐藏加载延迟和避免 UI 冻结的更简单方法。

如果您的音频未压缩,App Store 将报告压缩后的大小。如果这与未包装尺寸有很大不同,一些(挑剔的)客户肯定会注意到 ald 抱怨,因为他们认为广告尺寸是安装尺寸。我从个人经验中知道。他们通常不会采用技术答案作为答案,甚至可能会绕过与您交谈,并据此对您投反对票。我不知道。

于 2012-12-11T13:20:27.863 回答
1

如果您负担得起,请使用 FMOD,我相信它可以从各种压缩方案中提取音频。如果您只想自己处理所有这些文件,请创建一个 .zip 文件并使用 libz(iOS 库 libs.dylib)即时提取它们。

于 2012-12-11T15:09:20.497 回答