我在SKAction playSoundFileNamed上做错了什么,所以它会播放.wavs而不是.mp3s?

时间:2014-01-22 05:25:43

标签: ios sprite-kit

我现在已经遇到过这么多次了。客户端发给我一些.mp3s来放入项目。当我尝试使用此代码播放它们时:

SKAction *play = [SKAction playSoundFileNamed:@"birds.mp3" waitForCompletion:NO];
        [self runAction:play];
[self runAction:play];

该应用程序给我一个例外并在该行崩溃。

我拿了mp3并将其转换为.wav(在Reaper中),更改代码以加载它,没有问题,播放完美。我想也许原来的mp3有一些编码问题,所以我在Reaper中打开它,重新导出就像一个新的mp3,仍然崩溃。

当它崩溃时,我会查看堆栈跟踪(我认为我正在使用它)并且它显示了这个,看起来它可能遇到ID3问题但是? Reaper使用LAME编码mp3,我不知道它是不合规还是什么?有人碰到这个吗?

0x187321a98:  b      0x187321a54               ; ID3ParserHandle::ID3ParserHandle(void*, int (*)(void*, unsigned int, unsigned int, unsigned int, void**, unsigned int*)) + 492

1 个答案:

答案 0 :(得分:1)

这样的事情比较常见。某些程序会创建非标准音频文件,而AVPlayer可能会遇到某些标准但不常用的文件容器或功能或压缩格式的问题。

最简单的解决方法是使用其他程序重新编码文件。以Audacity为例。在这种情况下,如果问题仍然存在,请务必从mp3中删除任何ID3标签(作者,专辑名称等)。