移动应用程序中大量音频文件的最佳策略是什么?

时间:2009-10-13 12:53:32

标签: qt audio s60

我有一个S60应用程序,我在Qt写,并附有大量(数千)小音频文件,每个包含一个口语单词的剪辑。我的应用程序不要求高保真再现声音,但即使在最低比特率和单声道MP3中,它们平均每个6k。这意味着我的应用可能拥有高达10Mb的足迹。该应用程序的性质是,任何时候都只需要几个音频剪辑 - 可能多达50个,但更像1-10。

所以我的问题有两部分:

1)移动应用程序太大了10Mb?

2)在安装时传送所有音频文件的合理替代方法是什么?

由于

6 个答案:

答案 0 :(得分:2)

就持久存储而言,现代移动设备的10Mb并不是很多,因此 - 一旦下载 - 将应用程序数据存储在设备上应该不是问题。

然而,您可能需要考虑的其他类型的占用空间是内存使用情况。理想情况下,在开始播放之前,您需要在RAM中缓冲剪辑,以最大限度地减少延迟。鉴于大多数Symbian设备将每个进程的默认堆大小限制为1Mb,您无法将所有剪辑保留在内存中,因此您的应用程序需要管理加载和清除缓存。

然而,通常不可能在Symbian上缓冲多个压缩剪辑,因为缓冲剪辑通常需要使用稀缺资源(即音频协处理器)。打开另一个已经打开的新剪辑通常会导致第一个剪辑被关闭,这意味着您一次只能在内存中缓冲一个。

如果您确实需要减少延迟,那么您的应用程序将需要在必要时负责加载和解压缩,以提供PCM,然后您可以将其提供给音频堆栈。

答案 1 :(得分:1)

您是否考虑将所有剪辑都滚动到一个文件中然后在流中搜索?我不确定MP3的每文件开销有多少,但它可能会有所帮助。

也就是说,每个S60手机应该有1GB或更多,所以10MB听起来并不像“太多”。但您应该将应用程序作为JAR文件提供,人们可以使用PC从您的网站下载,然后通过电缆安装。在世界许多地方(例如瑞士),手机本身下载大量数据非常昂贵。

答案 2 :(得分:1)

10MB肯定是偏大的一面。大多数应用都是< 1MB,但我认为我看过一些大字体(6-10-15 MB),就像字典一样。

大多数S60手机的手机存储空间大约为100MB,但它们也有内存卡,这些通常是128MB +,4GB对于高端手机来说并不少见。您需要检查目标手机的规格!

拥有如此大的安装包将使得无线安装成为可能。尝试合并文件,以便您只有几个大文件而不是许多小文件,否则安装将花费太长时间。

另一种方法是发送最常用的声音并根据需要下载其余声音。 S60具有安全检查功能,您需要在签名时为其授予特殊权限。

答案 3 :(得分:1)

您是否考虑过将数千个音频文件分成几批,比如20?

您可以在应用程序安装文件中包含几个批次,并允许用户在需要时从应用程序GUI一次下载一个(或多个)批处理...

答案 4 :(得分:0)

将声音文件存储在SQLite数据库中,并仅在需要时访问它们。听起来像是在写一本口语词典。保持应用程序本身尽可能小。通过比较,这将使应用程序加载速度非常快。随着数据库市场的成熟,开发人员似乎只需要了解两个数据库引擎:SQLite,用于最高性能的桌面和手持应用程序,以及MySQL用于庞大的多用户数据库。除非关键,否则不要在启动时加载所有这些声音。我最喜欢的口语词典应用仍然是狡猾的Microsoft Bookshelf '96;不开玩笑。

答案 5 :(得分:0)

  1. 移动应用程序的10MB并不算太大,您说服用户他/她将通过无线方式播放的内容值得用户承担的数据费用。
  2. Symbian作为一个平台可以很好地使用这个应用程序,因为实际的音频文件将从SIS文件中传递,但二进制文件将不包含它们,因此不会导致内存问题......

    1. 最佳选择是通过您的网站提供媒体文件供下载,以便用户可以通过PC-Suite / Mass Storage传输下载和同步它们。允许用户将文件下载到e:\ Others或一些公开文件夹中,并提供从那里读取媒体...
    2. 我的2点......