2010-11-22 38 views
3

我正在使用AVAudioPlayer播放一个长长的音频文件(20秒左右)。我需要能够暂停并在文件中间启动。当音频播放时暂停或开始播放时,音频开始或结束时会出现明显的“流行音乐”。暂停/启动AVAudioPlayer没有毛刺弹出

我已经能够提高做一个非常快的淡出的情况(使用performSelector音量设置了多次:withObject:afterDelay但声音还是有点出问题这一技术

是否有开始/暂停AVAudioPlayer没有这些毛刺的标准方式?

回答

1

尝试发送-prepareToPlay你AVAudioPlayer对象时,它的暂停,这将预加载的声音。

如果这不工作,尝试加速你的淡出减少performSelector:withObject:afterDelay中的延迟。疯狂,毫秒。

如果这没有工作过,请尝试使用更清洁,更高质量的音频文件(不不相干的背景噪音)

如果没有这个工程,请解释如何在你的应用程序中的音频文件正在使用更详细地说。

+0

performSelector:withObject:afterDelay似乎受限于运行循环的分辨率。延迟可能有多小是有限制的。不记得它是什么,但我不确定你可以在毫秒范围内延迟使用该方法。 – morgancodes 2010-12-03 21:38:11

+0

确定你可以,如果它限制它将使用反正所允许的最小值,所以它没有区别。 – GSchv 2010-12-16 14:03:09

0

使用其中一个较低级别的API(音频队列或RemoteIO)。在一些PCM采样数上平滑地将乘法因子从1.0增加到0.0。在您自己的DSP音频混音器中将该因子用于逐个采样增益因子。重新启动时从0.0上升到1.0。线性或易入/易出的半余弦曲线。