停止并快速重放 AudioQueue

Posted

技术标签:

【中文标题】停止并快速重放 AudioQueue【英文标题】:Stopping and Quickly Replaying an AudioQueue 【发布时间】:2011-01-05 21:38:08 【问题描述】:

我有一个音频队列,可以正确播放、停止、暂停,但我发现 AudioQueueStop() 函数需要很长时间才能执行。

我想立即停止然后重新开始播放音频队列,想知道最快的方法是什么。

在我的项目中,我保留了多个音频队列,以反复播放特定的声音。有一种情况,我必须停止其中一些声音,然后立即播放它们,一次播放更多。如果我只对几个音频队列执行此操作,这还不错,但如果我需要停止并重新启动很多音频队列,它就会开始花费很长时间。

我可以通过在音频队列上调用 stop 然后创建一个具有相同声音的新队列来伪造它,但我想知道是否有更好的方法来做到这一点。

【问题讨论】:

【参考方案1】:

AudioQueue 对于这类东西可能会很乱。很难在缓冲区中间停止队列,这意味着当前缓冲区将继续播放。另外,您必须处理延迟问题。

为了以低延迟快速停止和播放,我建议使用 RemoteIO AudioUnit。

你可以在这里找到一个很棒的代码教程:

Using RemoteIO audio unit

【讨论】:

以上是关于停止并快速重放 AudioQueue的主要内容,如果未能解决你的问题,请参考以下文章

HTML音频元素如何重放?

开放API网关实践之重放攻击及防御

重放 Charles 代理会话并记录结果

用 AVAudioPlayer 重放音乐多次?

使用相同的按钮快速播放和停止音乐

在 HTTP 连接中使用基于令牌的身份验证时如何防止重放攻击