将 AudioUnit 回调与 NSOutputStream 同步
Posted
技术标签:
【中文标题】将 AudioUnit 回调与 NSOutputStream 同步【英文标题】:Synchronize AudioUnit callback with NSOutputStream 【发布时间】:2017-02-10 16:35:38 【问题描述】:我正在使用音频单元录制音频,然后将该数据写入 NSOutputStream,这是我用来通过 HTTP 发布该数据的绑定对的一部分。我的问题是音频单元录制回调和 NSOutputStream hasSpaceAvailable 回调完全相互独立,所以我很快就会遇到缓冲区不足。有什么方法可以同步这两者或将录音回调直接映射到 NSOutputStream?
【问题讨论】:
【参考方案1】:根据 Apple DTS,您不应该在实时线程音频单元回调中进行任何联网或任何其他同步。
但您不必直接在网络流的 hasSpaceAvailable 回调中发布数据。您可以在该回调函数退出后发布数据,既然您知道空间可用,那么当数据可用时。您还可以在循环队列或 fifo 中缓冲一些额外的音频数据,以便通常可以发送一些数据以覆盖网络速率变化和延迟抖动。
【讨论】:
以上是关于将 AudioUnit 回调与 NSOutputStream 同步的主要内容,如果未能解决你的问题,请参考以下文章
混音器 AudioUnit 到 RemoteIO AudioUnit
AudioUnit Render 回调中的 Objective-C/Swift 用法