我正在制作一款小型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,例如1103
和AudioServicesPlaySystemSound
,则该声音可以正常播放。
我很确定我的文件很好,因为相同的.wav文件在Android,VLC,iTunes等上运行完美。
有谁知道我做错了什么?
答案 0 :(得分:6)
最可能的罪魁祸首是WAV上的编码。如this answer所示,iOS仅支持某些编解码器,而您尝试播放的WAV可能使用不受支持的编解码器。
就像那个答案所说的那样,最简单的解决方案是使用命令行afconvert
工具(无损地)将您的WAV转换为Apple的默认CAF格式,然后使用它:
afconvert sound1.wav sound1.caf
另一种可能性 - 以及OP的实际问题 - 是文件不存在和/或pathForResource
没有成功找到它,这将由{{1}指示} path
。