2

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

所以我的问题有两个部分:

1) 移动应用程序的 10Mb 是否太大?

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

谢谢

4

6 回答 6

2

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

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

于 2009-10-13T12:59:45.653 回答
2

就持久存储而言,10Mb 对于现代移动设备来说并不算多,因此——一旦下载——将应用程序数据存储在设备上应该不成问题。

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

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

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

于 2009-10-13T15:07:34.967 回答
1

您是否考虑过将数千个音频文件分成例如 20 个的批次?

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

于 2009-10-13T17:14:09.373 回答
1

10MB 绝对是偏大的。大多数应用程序小于 1MB,但我认为我见过一些大的应用程序(6-10-15 MB),比如字典。

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

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

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

于 2009-10-13T15:08:52.997 回答
0

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

于 2009-10-13T18:26:01.840 回答
0
  1. 为移动应用提供 10MB 的空间并不算大,您可以让用户相信他/她要通过无线传输的内容值得用户支付的数据费用。

Symbian 作为一个平台可以很好地与这个应用程序配合使用,因为实际的音频文件将从 SIS 文件中传递,但二进制文件不会包含它们,因此不会导致内存问题......

  1. 最好的选择是通过您的网站提供媒体文件以供下载,以便用户可以通过 PC 套件/大容量存储传输下载和同步它们。允许用户将文件下载到 e:\Others 或一些公开可用的文件夹中,并提供从那里读取媒体...

我的2美分...

于 2010-05-10T08:45:31.433 回答