3

有一些简短的音效样本,在模拟器中播放得很好,但在真正的 iPhone 3GS 中完全没有。这是来自 Apple SysSound 示例的代码:

CFBundleRef mb = CFBundleGetMainBundle ();
CFURLRef soundFileURLRef = CFBundleCopyResourceURL
    (mb, CFSTR("mySound"), CFSTR ("caf"), NULL);

SystemSoundID sid;
AudioServicesCreateSystemSoundID(soundFileURLRef, &sid);
AudioServicesPlaySystemSound(sid);

使用 iPhone 时,我可以听到来自 iTunes 的按键声和音乐(不尝试在播放声音的同时使用) - 但根本听不到我的声音。Vibra 工作正常,所以即使是 Framework 也应该正确设置。

甚至尝试了 SoundEffect.h/m 示例代码,没有任何变化。使用相同的声音文件,但 CAF 不应该可以,尤其是在模拟器中播放时?

接下来我可以尝试什么?

4

4 回答 4

3

尝试转换为不同的格式,例如 wav 或 mp3,然后重新播放。如果要使用 caf,请确保在 Terminal.app 中正确格式化 caf:

afconvert -f caff -d ima4 mysound.wav
于 2010-01-14T14:18:09.963 回答
2

顺便说一句 - 我遇到了完全相同的问题,可能花了将近一个小时将文件转换为正确的格式等。但问题是 iPad 上的“静音”开关。所以即使音量调高了,我还能听到 iPad 上的其他声音,因为静音开关打开了,它并没有播放系统声音。

更令人困惑的是,这个应用程序使用文本到语音,并且来自转录的音量非常好,只是AudioServicesPlaySystemSound()我听不到来自的声音。

于 2012-12-03T20:29:18.343 回答
0

有点长镜头,但请记住,手机的文件系统区分大小写,而 mac 通常不区分大小写。仔细检查您的文件名

于 2010-01-14T14:11:11.710 回答
0

找到了一个更简单的解决方案:使用 AIF 声音文件

  • 单击 iTunes > 首选项
  • 单击“常规”选项卡
  • 单击“导入设置”按钮
  • 在“导入使用”下拉列表中,选择“AIFF 编码器”
  • 保存您的更改
  • 选择您的声音文件并选择“创建 AIFF 版本”

这是我正在使用的代码,以及来自Apple 示例BubbleLevel的SoundEffect.hSoundEffect.m

NSBundle *mainBundle = [NSBundle mainBundle];
buzzerSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"buzzerSound" ofType:@"aif"]];
[buzzerSound play];

现在相同的代码和声音效果可以在模拟器和硬件中工作。顺便说一句,不要忘记切换回原来的 iTunes 设置!

于 2010-01-15T08:15:34.143 回答