【发布时间】:2016-03-14 10:49:33
【问题描述】:
AUAudioUnit 和 AVAudioUnit API 看起来非常相似,
有什么区别?什么时候用哪一个?
【问题讨论】:
标签: ios core-audio audio-streaming
AUAudioUnit 和 AVAudioUnit API 看起来非常相似,
有什么区别?什么时候用哪一个?
【问题讨论】:
标签: ios core-audio audio-streaming
请注意,AUAudioUnit 表示 V3 音频单元,即使它以“AU”开头。它在 iOS 9 中可用。较旧的 API 也以“AU”开头(例如 AUSampler),但它们是 V2。
一般来说,您应该在您的应用中使用AVAudioUnit。请注意,它仅在 iOS 8+ 中可用。如上所述,您可以使用AVAudioNode 类轻松设置AVAudioEngine。 AUAudioUnit 无法做到这一点。
如果您正在编写自己的音频单元,您应该使用AUAudioUnit 子类化它。
编辑:如果您打算显示 V3 音频单元的 viewController,也请使用 AUAudioUnit。
【讨论】:
一个 AVAudioUnit 作为一个节点连接到一个 AVAudioEngine 中。 AUAudioUnit 通常连接在 AUGraph 中。功能应该相似,因为两者都是音频单元,但使用 AVAudioEngine 是 iOS 中现代音频控制方式,因此 AVAudioUnits 背后有更现代化的 API。
我敢肯定,在某些用例中,一个比另一个更受欢迎,但我会说使用 AVAudioUnits,除非你需要他们不提供的特定内容。 AUAudioUnits 及其处理图的可定制性非常好,但根据我的经验,它伴随着陡峭的学习曲线和更多的代码。我花了很多不眠之夜检查我的 AUGraph,但 AVAudioEngine 对我非常友好。
此外,AVAudioNodes 和 AVAudioUnits 在附加到 AVAudioEngine 之前无法正常工作,但是您可以使用渲染回调在没有 AUGraph 的情况下设置 AUAudioUnits。
【讨论】: