使用AVPlayer添加iPod均衡器效果

6
我们正在使用AVPlayer开发一款音乐应用,目前已经进入了最后阶段。但是当我们开始在iPod上应用均衡器效果时,出现了问题。我们可以获取内置的均衡器列表,但是当我们应用AudioUnitProperty时,歌曲中却没有任何效果。希望您能给予宝贵的回复,对我们非常有帮助。

可能是重复问题?https://dev59.com/UVvUa4cB1Zd3GeqPtnOD - user207616
为什么不尝试使用这个 https://github.com/bartolsthoorn/NVDSP 呢? - iphonic
@iphonic 我们使用了 NVDSP,但是我们没有从默认均衡器获得的相同效果。 - Anand
有没有办法将效果注入到AVPlayer中? - Anand
我认为你不能以你想要的方式实现你想要的东西。我建议购买这本书http://www.amazon.com/Learning-Core-Audio-Hands-Programming/dp/0321636848,以获得有关iOS音频的一些好见解。 - sangony
2个回答

4
您可以使用iOS中的AUGraphAudioUnits来实现各种EQ效果。基本上,您需要在音频源和输出之间插入效果。您可以使用多通道混音器来进行一些控制,或者使用AUGraph中的其他更复杂的音频单元来获得更大的音频控制权。使用AudioUnits,如果需要,甚至可以访问缓冲区中的每个音频样本。这将要求您重新编写一些音频处理代码,但肯定可以应用EQ效果。
您可以使用iPod Effects Unit,它与iOS在播放音乐时应用这些效果时使用的单位完全相同。这将为您提供最接近效果声音的匹配,因为它是完全相同的AudioUnit
来自Apple:

iPod EQ Audio Unit Description(向下滚动页面)

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

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

您可以在音频源(例如文件、麦克风输入等)和音频输出(扬声器、耳机等)之间插入此单元。然后,您可以将任何iPod EQ效果应用于您的音频。

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

kAudioUnitType_Effect

kAudioUnitSubType_AUiPodEQ

kAudioUnitManufacturer_Apple

此外,请务必查看来自苹果公司的音频单元托管指南。该页面包含许多其他相关文档的链接,您将希望参考这些文档。

3
使用 MTAudioProcessingTap + AUGraph + AudioUnit 可以做到这一点,官方演示文稿AudioTapProcessor展示了如何使用MTAudioProcessingTap处理音频数据,然后在其处理回调中与AVPlayer结合使用,使用AUGraph + AudioUnit替换其AudioUnit。

你如何在MTAudioProcessingTap中实现AUGraph?我以为我们只能使用AudioUnit。 - DEADBEEF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接