SpriteKit playSound不播放m4a文件?

时间:2014-04-30 14:42:25

标签: objective-c sprite-kit m4a skaction

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

SKAction* playSound = [SKAction playSoundFileNamed:@"backgroundMusicLoop.m4a" waitForCompletion:NO];
[self runAction: [SKAction repeatActionForever:playSound]];

它没有发生任何事情(我试过它不是在模拟器中,而是在真实的设备上)! 我试着播放一个wav文件并且没有错误,但是wavs有更大的文件大小...

希望有人知道解决方案:)

1 个答案:

答案 0 :(得分:0)

<强>已更新

将waitForCompletion从NO更改为YES。

将其设置为NO表示操作将始终重复,而不等待声音播放结束。实际上它在开始时就卡住了,没有机会完成任务。

(因为我第一次看不到第一次的脑屁!)

<强> ORIGINAL

m4a声音格式似乎与playSoundFileNamed:waitForCompletion:有问题。尝试其他格式,如mp3或caf。

如果您绝对需要使用m4a,请使用AVAudioSession播放您的声音,音乐。

如果您不知道如何使用iTunes转换格式,请参阅Apple的说明:

  

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

     

转换歌曲的文件格式打开iTunes偏好设置。视窗:   选择编辑&gt;喜好。 Mac:选择iTunes&gt;喜好。点击   单击常规按钮,然后单击中的导入设置...按钮   窗户的下半部分。从“导入使用”弹出菜单中,选择   要将歌曲转换为的编码格式,然后单击   单击确定以保存设置。选择库中的一首或多首歌曲,   然后从文件&gt;创建新版本菜单,选择其中一个   跟随(菜单项更改以显示您的选择内容   导入首选项):创建MP3版本创建AAC版本创建   AIFF版本创建WAV版本创建Apple无损版本如果你   还没有将一些歌曲导入iTunes,你可以导入和   同时转换它们。这将创建一个转换后的副本   iTunes资料库中的文件基于您的iTunes偏好设置。至   转换文件夹或磁盘上的所有歌曲,按住选项   键(Mac)或Shift键(Windows),然后选择文件&gt;创建新版本

     
    

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

  
     

原始格式的歌曲和新转换的歌曲出现在   你的图书馆。