iPhone:AVAudioPlayer 并不总是在设备上播放音频
Posted
技术标签:
【中文标题】iPhone:AVAudioPlayer 并不总是在设备上播放音频【英文标题】:iPhone: AVAudioPlayer not always playing audio on device 【发布时间】:2011-03-13 12:51:52 【问题描述】:我的应用中有 2 个视图,它们是相同的,它们只是加载到不同的声音文件数组中,以便与它们各自的 AVAudioPlayer 一起使用。 但是,仅在设备上,在我的第二个视图中,声音似乎在初始化后只播放一次,然后在我再次初始化播放器之前它不会播放。
这是我的播放按钮代码:
- (IBAction)play:(id)sender
if (((int)buttonCount % 2) == 0)
[[AVAudiosession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
self.audioPlayer.currentTime = 0;
self.audioPlayer.volume = volumeSlider.value;
[self.audioPlayer play];
[playButton setTitle:@"Stop..." forState:UIControlStateNormal];
buttonCount++;
[self fadePickerAnimation:NO];
NSLog(@"Should play");
else
[self initializeSoundAfterStop:YES];
NSLog(@"Shouldn't play");
NSLog(@"buttoncount %i",buttonCount);
NSLog(@"What is the playing state? %i", self.audioPlayer.playing);
以及它在 else 子句下调用的函数:
- (void)initializeSoundAfterStop:(BOOL)addToButtonCount
//Initialize audioPlayer once completely stopped
[self.audioPlayer stop];
[self.audioPlayer prepareToPlay];
[playButton setTitle:@"Chime!" forState:UIControlStateNormal];
if (addToButtonCount == YES)
buttonCount++;
当我连续按下播放按钮时,上面代码中的 NSLogs 会输出这个:
Should play
buttoncount 1
What is the playing state? 1
Shouldn't play
buttoncount 2
What is the playing state? 0
Should play
buttoncount 3
What is the playing state? 0
Shouldn't play
buttoncount 4
What is the playing state? 0
Should play
buttoncount 5
What is the playing state? 0
Shouldn't play
buttoncount 6
What is the playing state? 0
如您所见,由于某种原因,它卡在了非播放模式中。 在我的第一个视图中,此方法的使用方式完全相同,并且没有任何问题。在模拟器上一切正常,只是在我的 iPhone 4 上不行。无法弄清楚。设置断点时会调用 audioPlayer 的播放方法,所以我不知道! 谢谢!
【问题讨论】:
刚刚在我的播放按钮IBAction中添加了这个:NSLog(@"%@", self.audioPlayer.url);并且控制台显示每次我按下它都会找到声音URL。那为什么不播放!? 【参考方案1】:无法找出发生这种情况的原因,但是,我通过在播放 IBAction 顶部添加我的 AVAdioPlayer 初始化函数来修复它。 可能不是最优雅的解决方案,但它确实有效。
如果您决定这样做,请注意内存分配。
【讨论】:
看来这是唯一的决定 这里不清楚你做了什么。你能提供代码sn-p吗?谢谢! @Olie 所以刚刚添加了这个:- (IBAction)play:(id)sender if(buttonCount != 0) [self initializeAudioPlayer:self.soundSelected];
正如我所说,不优雅,但有效!以上是关于iPhone:AVAudioPlayer 并不总是在设备上播放音频的主要内容,如果未能解决你的问题,请参考以下文章
使用 AVPlayer 的 Airplay 并不总是有效。 “iPhone”选项在 Airplay 菜单中列出两次
iPhone:AVAudioPlayer 是不是支持 .wav 格式?
iPhone:如何使用 AVAudioPlayer 检测 Iphone/Ipod 音量级别
iPhone:MPMusicPlayerController 停止 AVAudioPlayer