声音不在iOS中播放

时间:2012-02-26 08:09:00

标签: ios audio

我正在制作一款小型iOS游戏,除了声音外,还完成了所有内容。我检查了文件格式,尝试过.wav和.aiff,但没有一个能够正常工作。相关代码如下:

.h档案:

#import <AudioToolbox/AudioToolbox.h>

@public SystemSoundID mBeep;
NSString* path;
NSURL* url;

.m档案:

path = [[NSBundle mainBundle]pathForResource:@"hit" ofType:@"wav"];
url = [NSURL URLWithString:path];
AudioServicesCreateSystemSoundID((CFURLRef)url, &mBeep);

AudioServicesPlaySystemSound(mBeep); //Gets called, doesn't play

如果我使用其中一个未记录的ID,例如1103AudioServicesPlaySystemSound,则该声音可以正常播放。

我很确定我的文件很好,因为相同的.wav文件在Android,VLC,iTunes等上运行完美。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:6)

最可能的罪魁祸首是WAV上的编码。如this answer所示,iOS仅支持某些编解码器,而您尝试播放的WAV可能使用不受支持的编解码器。

就像那个答案所说的那样,最简单的解决方案是使用命令行afconvert工具(无损地)将您的WAV转换为Apple的默认CAF格式,然后使用它:

afconvert sound1.wav sound1.caf

另一种可能性 - 以及OP的实际问题 - 是文件不存在和/或pathForResource没有成功找到它,这将由{{1}指示} path