我有一个庞大的Xcode项目,一直在进行更新。安装iOS 7.1 SDK之后,在此项目中的AVAudioPlayer上播放音频不再起作用。我创建了一个新的空白项目来测试完全相同的代码,并且效果很好。
我肯定知道文件是在捆绑资源下复制的,文件已添加到目标,URL是完美的,因为我能够从文件的NSURL中获取NSData并与之匹配。AVAudioPlayer是具有强原子属性和非原子属性的属性,但是在此项目中将不会播放。我还确保将AVAudioSession设置为播放模式。
我什至创建了一些空白视图控制器类来测试项目中的AVAudioPlayer,它在任何一个中均不起作用,但是在我制作的新的空白iOS项目中,声音可以正常播放。
在.h中
NSURL *soundUrl;
@property (nonatomic, strong) AVAudioPlayer *soundPlayer;
在他们中
@synthesize soundPlayer = _soundPlayer;
- (void)playSomeSound {
NSError *audioError;
soundUrl = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:soundFile ofType:@"m4a"]];
_soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:&audioError];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:NULL];
_soundPlayer.delegate = self;
[_soundPlayer play];
}
soundFile只是我要播放的声音文件名称的字符串。
我尝试在音频播放器的所有委托方法和音频播放器的初始化中记录错误。所有错误返回(空)。
与在iOS 7上无法播放音频的iOS 7不同,在iOS 6.1上,初始化音频播放器会导致EXC_BAD_ACCESS代码2崩溃。
另外,CocosDenshion中的AVAudioPlayer似乎可以正常工作。(我在项目的某些部分中使用了cocos2d,但这不是游戏。)
另一个(可能很重要的)注意事项是,我在项目中也使用了AVAudioRecorder。可以正常工作而不会出现任何问题,并且我确保在不录制时将AVAudioSessionCategory切换为播放。
谢谢大家,但是不知何故,最终导致了某些框架之间的冲突。iOS的Kamcord SDK中存在一个错误,但我正在与他们的开发团队联系,他们正在努力对其进行修复。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句