我正在尝试播放从前一个 UIView
传递而来的 MP3
文件(存储在 NSURL *fileURL
变量中)。
我使用以下代码初始化了一个 AVPlayer
:
player = [AVPlayer playerWithURL:fileURL];
NSLog(@"Player created:%d",player.status);
NSLog
打印出 Player created:0,
,我想这意味着它还没有准备好播放。
当我点击播放的 UIButton
时,我运行的代码是:
-(IBAction)playButtonClicked
{
NSLog(@"Clicked Play. MP3:%@",[fileURL absoluteString]);
if(([player status] == AVPlayerStatusReadyToPlay) && !isPlaying)
// if(!isPlaying)
{
[player play];
NSLog(@"Playing:%@ with %d",[fileURL absoluteString], player.status);
isPlaying = YES;
}
else if(isPlaying)
{
[player pause];
NSLog(@"Pausing:%@",[fileURL absoluteString]);
isPlaying = NO;
}
else {
NSLog(@"Error in player??");
}
}
当我运行这个程序时,我总是在控制台中得到“Error in player”??但是,如果我使用一个简单的if条件代替检查AVPlayer是否准备好播放的if条件,即if(!isPlaying),那么当我第二次点击播放UIButton时,音乐会播放。
控制台日志如下:
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 0**
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Pausing:http://www.nimh.nih.gov/audio/neurogenesis.mp3
Clicked Play. MP3:http://www.nimh.nih.gov/audio/neurogenesis.mp3
2011-03-23 11:06:43.674 Podcasts[2050:207] Playing:http://www.nimh.nih.gov/audio/neurogenesis.mp3 **with 1**
我注意到第二次时,player.status
看起来保持为 1,我猜想这是指 AVPlayerReadyToPlay
。
我该如何让播放在第一次点击播放 UIButton
时正常工作?
(即,我如何确保 AVPlayer
不仅仅是被创建,而且还准备好播放?)
player.status
不准确时,player.currentItem.status
是准确的。不确定两者之间的区别是什么。 - bendytree