声音不在iOS中播放

Rag*_*ood 1 audio ios

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

.h 文件:

#import <AudioToolbox/AudioToolbox.h>

@public SystemSoundID mBeep;
NSString* path;
NSURL* url;
Run Code Online (Sandbox Code Playgroud)

.m 文件:

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

AudioServicesPlaySystemSound(mBeep); //Gets called, doesn't play
Run Code Online (Sandbox Code Playgroud)

如果我使用无证ID之一,就像1103AudioServicesPlaySystemSound,声音正常播放.

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

有谁知道我做错了什么?

yuj*_*uji 6

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

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

afconvert sound1.wav sound1.caf
Run Code Online (Sandbox Code Playgroud)

另一种可能性和实际问题的任择议定书有,是该文件不存在和/或pathForResource没有成功找到它,它会被指示pathnil.

  • 我试过了.您给出的命令不起作用,但通过一些谷歌搜索,转换发生在"afconvert -f caff -d aac -c 1 /Users/raghavsood/Desktop/iOS/Shared/Resources/hit.wav/Users/raghavsood/Desktop/iOS/Shared/Resources/hit.caf"即使在此之后声音也不会播放.我也尝试使用aiff格式.你还有其他建议吗? (2认同)