声音在iOS中无法播放

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

.h文件:

 #import  @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,例如带有AudioServicesPlaySystemSound 1103 ,则该声音可以正常播放。

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

有谁知道我做错了什么?

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

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

 afconvert sound1.wav sound1.caf 

另一种可能性 – 以及OP的实际问题 – 是文件不存在和/或pathForResource没有成功找到它,这将由pathnil表示。