iphone-AVAudioPlayer 重叠

Posted

技术标签:

【中文标题】iphone-AVAudioPlayer 重叠【英文标题】:iphone-AVAudioPlayer Overlaps 【发布时间】:2013-12-02 18:08:30 【问题描述】:

我有一个按钮,每次单击它时都会播放一个 AVAudiplayer 声音文件。该文件是一个相对较短的 .mp3 激光声音。所以,我声明了一个 AVAUdiplayer,并准备在我的代码中的 viewDidLoad 函数中播放它。那工作得很好。然后,当按钮被点击时,我写了 [audioPlayer play] 。这也很好用。问题是当我反复单击按钮时,第一次按钮单击的声音在完成之前不会中断,即使有重叠。因此,直到下一个声音完成后才会播放下一个声音。请用代码回答。

【问题讨论】:

【参考方案1】:

检查它是否先播放。如果它停止它然后播放。

  if (audioPlayer.rate != 0.0f) [audioPlayer stop];

    [audioPlayer play];

【讨论】:

当它不播放时停止它并没有什么坏处。所以不需要先检查。 @Rookie 另外,如果我单击按钮以非常快地播放声音,那会有任何延迟吗? 什么不起作用?能否说的更清楚一些,请提供一些代码 @Rookie 这是我在视图中的代码确实加载功能:NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"/lazer" ofType:@"mp3"]]; NSError *error; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; [audioPlayer prepareToPlay]; @Rookie 然后,我使用您建议的代码在一个名为 fire 的函数中调用它。这仍然有我的重叠问题。

以上是关于iphone-AVAudioPlayer 重叠的主要内容,如果未能解决你的问题,请参考以下文章

HTML/CSS:垂直边框重叠水平边框

iPhone - AVAudioPlayer、kAudioSessionCategory_AmbientSound 和 iPod 音乐

AV_SAMPLE_FMT_S16P 和 AV_SAMPLE_FMT_S16 有啥区别?

FFmpeg: FFmpeg中的av_free()和av_freep()区别

AV1硬件采用及未来发展

如何将采样率从 AV_SAMPLE_FMT_FLTP 转换为 AV_SAMPLE_FMT_S16?