如何处理数千个小音频文件?

时间:2012-12-11 12:32:02

标签: objective-c ios

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

3 个答案:

答案 0 :(得分:1)

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

另外要考虑的是,访问磁盘的速度比内存慢,而且还占用了电池空间,因此我最理想的是将最常用的音频剪辑加载到内存中。

答案 1 :(得分:1)

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

你可以做的事情:

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

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

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

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

答案 2 :(得分:1)

如果你负担得起,请使用我认为可以从各种压缩方案中提取音频的FMOD。如果你只想自己创建一个.zip文件并使用libz(iOS库libs.dylib)动态提取它们。