audio文件不能在iPhone 5中播放

我使用一个代码来播放.cafaudio文件,相同的代码适用于iPhone 4s和iPad 2,但在iPhone 5中完全不能播放…

这是代码:

-(IBAction)checkSound:(id)sender { NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Lunatic.caf", [[NSBundle mainBundle] resourcePath]]]; NSLog(@"%@",url); NSError *error; self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; self.audioPlayer.numberOfLoops = 0; self.audioPlayer.volume = 1; NSLog(@"log audioplayer: %@",audioPlayer); if (audioPlayer != nil) { [self.audioPlayer prepareToPlay]; [self.audioPlayer play]; } if (audioPlayer.playing == NO) { NSLog(@"not playing, error: %@",error); } if([[NSFileManager defaultManager] fileExistsAtPath:@"file://localhost/var/mobile/Applications/0D3F5169-8DB1-4398-A09A-DB2FBADF57EF/myApp.app/Lunatic.caf"]) { NSLog(@"file exist"); } else { NSLog(@"file doesn't exist"); } } 

这是日志输出:

2013-08-07 20:05:52.694 myApp [7006:907] file://localhost/var/mobile/Applications/0D3F5169-8DB1-4398-A09A-DB2FBADF57EF/myApp.app/Lunatic.caf 2013-08-07 20:05:52.697 myApp [7006:907] log audioplayer:(null)2013-08-07 20:05:52.701 myApp [7006:907]不能播放,错误:Error Domain = NSOSStatusErrorDomain Code = -43“ (OSStatus error -43。)“2013-08-07 20:05:52.703 myApp [7006:907]文件不存在

正如你可以看到audioplayer日志给“null”和错误日志说错误-43 ….但我重复… …与iPhone 4S一切正常….

任何线索为什么会发生这种情况? 他们在iPhone 5中改变了audio吗? 可能是我的iPhone 5中的一个设置阻止声音播放? 任何帮助将不胜感激

在打电话之前是否已经调用了[audioPlayer prepareToPlay] ? 还有你检查了audio路由,以确保它正在播放正确的频道吗?

两个很好的理智检查是:

1.)调用[audioPlayer isPlaying] ,看看是否返回是或否,你打电话后。

2.)设置AVAudioPlayerDelegate并等待audioPlayerDidFinishPlaying:上的callbackaudioPlayerDidFinishPlaying:并查看它是否在audio的长度后被调用。

http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html

编辑:由于你是文件实际上不是在玩,最有可能意味着你有错path你打电话。

用NSLog打印出你的path,并用下列命令检查文件是否真实存在:

 if([[NSFileManager defaultManager] fileExistsAtPath:yourPath]) { }