音频单元图表暂停和重复

时间:2011-11-02 09:00:18

标签: iphone audio core-audio

我一直在尝试使用Apple提供的代码实现Audio Unit Graph: IphoneMixerEQGraphTest。到目前为止,我遇到了两个问题:

1。)我找不到暂停播放的方法

2。)提供的例子无休止地重复。有没有办法我可以禁用重复或停止它 - 使用定时器,拦截某种缓冲值,当播放几乎结束时?

谢谢。

2 个答案:

答案 0 :(得分:0)

没有重复功能

到目前为止,我已经找到了一种处理音频停止的方法 - 尽管它并不漂亮:

我在AVAudioPlayer中加载相同的音频文件 - 并从中获取声音文件的持续时间。然后,使用

performSelector:withObject:afterDelay: 

当声音文件结束播放时,我可以停止AUGraph。

PAUSE AUGRAPH FUNCTIONALITY

事实证明,实现暂停非常简单。虽然AUGraph数据源未更改 - 通过调用

[graphController startAUGraph]; or [graphController stopAUGraph];

只会暂停/继续播放。

虽然这会影响performSelector计时器。因此,要同时使用 - 暂停/不重复的可能性,应该使用NSTimer - 当AUGraph暂停时 - 然后计时器也会暂停。当AUGraph恢复时 - 计时器恢复计数,当它达到提供的声音文件持续时间时 - 它停止播放。

底线

通过使用来自AVAudioPlayer(或任何其他提供持续时间的播放器)的持续时间值 - 可以实现具有播放/暂停/停止(无重复/重复)/下一首歌曲/上一首歌曲/功能+ EQUALIZER的AUGraph声音播放器

答案 1 :(得分:0)

AVAudioPlayer是一个庞大的课程,您可以轻松地获得持续时间:

Float64 fileDuration = PrepareFileAU (fileAU, fileFormat, audioFile);

参见ADC示例:

http://developer.apple.com/library/mac/#samplecode/PlayFile/Introduction/Intro.html

避免包含其他框架。