音频单元图暂停和重复

Posted

技术标签:

【中文标题】音频单元图暂停和重复【英文标题】:Audio Unit Graph pause and repeating 【发布时间】:2011-11-02 09:00:18 【问题描述】:

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

1.) 我找不到任何暂停播放的方法

2.) 如果示例不断重复。有没有办法可以禁用重复或停止它 - 使用计时器,在播放快结束时截取某种缓冲值?

谢谢。

【问题讨论】:

【参考方案1】:

没有重复功能

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

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

performSelector:withObject:afterDelay: 

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

暂停AUGRAPH功能

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

[graphController startAUGraph]; or [graphController stopAUGraph];

只会暂停/恢复播放。

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

底线

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

【讨论】:

【参考方案2】:

AVAudioPlayer 是一个庞大的类,您可以轻松地从以下位置获取持续时间:

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

查看 ADC 示例:

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

避免包含其他框架。

【讨论】:

以上是关于音频单元图暂停和重复的主要内容,如果未能解决你的问题,请参考以下文章

在IOS核心音频中,如何找到文件播放器音频单元的真实当前播放头位置?

在 HTML 音频播放器中切换播放/暂停按钮

AEC ios 多音频单元图

在目标 c 中按住 tableview 单元格上的按钮状态单击

音频播放和暂停 Ionic Creator 应用程序(音频流 - 广播应用程序)

当 AVAudioPlayer 完成播放时切换 tableview 单元格图像