Objective c SpriteKit playSound不播放m4a文件?

Objective c SpriteKit playSound不播放m4a文件?,objective-c,sprite-kit,m4a,skaction,Objective C,Sprite Kit,M4a,Skaction,我想使用PlaySoundFileName:方法将背景声音文件作为循环播放,我像往常一样将其复制到项目中,但问题是,程序在声音代码行停止 SKAction* playSound = [SKAction playSoundFileNamed:@"backgroundMusicLoop.m4a" waitForCompletion:NO]; [self runAction: [SKAction repeatActionForever:playSound]]; 它什么也没发生,我不是在模拟器上试过,

我想使用PlaySoundFileName:方法将背景声音文件作为循环播放,我像往常一样将其复制到项目中,但问题是,程序在声音代码行停止

SKAction* playSound = [SKAction playSoundFileNamed:@"backgroundMusicLoop.m4a" waitForCompletion:NO];
[self runAction: [SKAction repeatActionForever:playSound]];
它什么也没发生,我不是在模拟器上试过,而是在一台真正的设备上试过! 我试着播放一个wav文件,并没有出现错误,但wav有很多更大的文件大小

希望有人知道解决方案:

更新

将waitForCompletion从“否”更改为“是”

将其设置为“否”意味着动作将始终重复本身,而无需等待声音播放结束。实际上,它在一开始就被卡住了,没有机会玩到底

我第一次没看到这一点,真是太蠢了

原创的

m4a声音格式似乎与名为waitForCompletion:的PlaySoundFiles存在问题。尝试其他格式,如mp3或caf

如果您确实需要使用m4a,则使用音频会话来播放您的声音、音乐

如果您不知道如何使用iTunes转换格式,以下是苹果的相关说明:

以新文件格式保存歌曲副本 当从压缩文件格式转换为未压缩文件格式(例如,从MP3转换为AIFF)时,您不应该注意到音质的任何降低。但是,在MP3和AAC等压缩格式之间转换时,您可能会注意到音质降低。为了获得最佳效果,如果您希望以不同的文件格式对音乐进行编码,则应使用新的编码格式再次从原始源导入音乐

要转换歌曲的文件格式,请打开iTunes首选项。窗户: 选择编辑>首选项。Mac:选择iTunes>首选项。点击 单击“常规”按钮,然后单击中的“导入设置…”按钮 窗户的下部。从使用弹出菜单导入,选择 要将歌曲转换为的编码格式,然后单击 确定以保存设置。在库中选择一首或多首歌曲, 然后从文件>创建新版本菜单中,选择以下选项之一: 更改菜单项后,将显示在菜单中选择的内容 导入首选项:创建MP3版本创建AAC版本创建 AIFF版本创建WAV版本创建苹果无损版本 尚未将某些歌曲导入iTunes,您可以导入并 同时转换它们。这将创建的转换副本 根据您的iTunes首选项在iTunes库中创建文件。到 转换文件夹或磁盘中的所有歌曲,按住该选项 键入Mac或Shift键窗口,然后选择文件>创建新版本

转换[导入首选项设置]。导入首选项设置将与您在步骤3中选择的内容匹配。iTunes将提示您输入 要导入和转换的文件夹或磁盘的位置。所有的 文件夹或磁盘上的歌曲将被转换。注:较老 购买的歌曲使用受保护的AAC格式进行编码,以防止 他们不会被转化。如果您需要将这些转换为另一个 格式,请按照本文中的说明进行升级

原始格式的歌曲和新转换的歌曲将显示在中 你的图书馆


我现在创建了一个mp3和一个aiff版本的声音文件。mp3文件也不起作用。正在加载aiff文件,但只听到一声响亮的嗖嗖声…非常感谢。我真的很感谢你的帮助。现在的工作就像一种魅力;好吧,我今天通过网络搜索找到了这个答案,但在我的例子中,SKAction.playsoundfilename确实在播放.m4a文件时遇到了问题。SKAction:Error加载声音资源。转换为.mp3修复了它。