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的长度后被调用。
编辑:由于你是文件实际上不是在玩,最有可能意味着你有错path你打电话。
用NSLog打印出你的path,并用下列命令检查文件是否真实存在:
if([[NSFileManager defaultManager] fileExistsAtPath:yourPath]) { }