使用AVPlayer添加iPod均衡器效果

我们正在开发一个使用AVPlayer的音乐应用程序,它正处于最后阶段。 一切都在轨道上,直到我们开始研究iPod Equalizer对当前歌曲应用效果。 当我们应用AudioUnitProperty时,我们能够获取内置的Equalizers列表,我们在歌曲中看不到任何效果。

您的宝贵回复将对我们有所帮助。

你绝对可以使用iOS中的AUGraphAUGraph来完成各种EQ效果。

基本上,您可以在音频的源和输出之间插入效果。 您可以使用多声道混音器之类的东西在AUGraph拥有一些控制或其他更复杂的音频单元,以获得对音频的更大控制。 使用AudioUnits,如果需要,您甚至可以获取缓冲区中的每个音频样本。 这将要求您重新编码一些音频处理,但它肯定会允许您应用EQ效果。

您可以使用iPod效果单元,它与iOS在播放音乐时应用这些效果完全相同。 这将为您提供最接近效果声音的匹配,因为它与AudioUnit完全相同。

来自Apple:

iPod EQ音频单元说明 (向下滚动页面)

音频单元子类型的类型定义

iPod EQ单元提供一组预定义的色调均衡曲线作为出厂预设。 通过访问音频单元的kAudioUnitProperty_FactoryPresets属性获取可用EQ设置数组。 然后,您可以使用它作为kAudioUnitProperty_PresentPreset属性的值来应用设置。

您可以在音频源(无论是文件,麦克风输入等)和音频输出(扬声器,耳机等)之间插入此装置。 然后,您可以将任何iPod EQ效果应用于音频。

以下是指定iPod EQ单元时使用的属性:

kAudioUnitType_Effect

kAudioUnitSubType_AUiPodEQ

kAudioUnitManufacturer_Apple

另外,请务必查看Apple的“ 音频单元托管指南” 。 此页面包含您要参考的许多其他相关文档的链接。

使用MTAudioProcessingTap + AUGraph + AudioUnit可以做到这一点,官方演示AudioTapProcessor向您展示如何使用MTAudioProcessingTap处理音频数据,然后与AVPlayer结合使用它的进程回调,使用AUGraph + AudioUnit替换它的AudioUnit