IOS: 如何在 Swift 中增加 AVAudioPlayer 的低音和高音?

IOS: How to increase the Bass and Treble of a AVAudioPlayer in Swift?

  1. 有谁知道如何增加曲目的低音和高音吗?

  2. 在同一首曲目中,如果我分成 3 个部分,我可以调整并说出 3 个不同级别的混响,即每个部分一个吗?

谢谢

我认为 AVAudioPlayer 无法使用 EQ 效果器。

通过快速搜索,我从 Whosebug 得到了这样的答案:

can I use AVAudioPlayer to make an equalizer player?

或者来自 Apple 开发者论坛的这个令人遗憾的未回答问题:

https://forums.developer.apple.com/thread/46998

相反

您可以改为使用 AVAudioEnginehttps://developer.apple.com/reference/avfoundation/avaudioengine) which gives you the opportunity to add an EQ node(或其他效果节点)到您的 AVAudioPlayer 节点。

AVAudioEngine 乍一看可能令人望而生畏,但可以将其视为混音器。您有一些生成声音的输入节点(例如 AVAudioPlayer 节点),然后您可以将这些音符附加并连接到您的 AVAudioEngine. The AVAudioEngine has a AVAudioMixerNode,这样您就可以控制音量等。

在输入节点和混音器之间,您可以附加效果节点,例如 EQ 节点,如果需要,您可以添加“tap”并将最终输出记录到文件中。

阅读material

This slideshare introduction 对我理解什么是 AVAudioEngine 有很大帮助(虽然代码是 Objective C,但应该可以理解)

WWDC 2014 的 AVAudioEngine in Practice 也是一个很好的介绍。

所以,我希望你不会被上面的内容吓到,就像我说的,当你第一次看到它时可能会感到畏惧,但是一旦你把它连接起来它就可以正常工作并且你可以选择添加其他效果不仅仅是 EQ(变调、放慢文件速度等)。

希望对你有所帮助。

不幸的是,它不允许您流式传输远程 URL。解决此问题的唯一方法是下载曲目,使用音频服务 API 将其从 mp4 或 m4a 转换为 LPCM 格式,然后通过音频引擎安排缓冲区到 运行。另一方面,AVPlayer 允许您流式传输远程媒体,但很难附加和 eq 到它...您可以查看 MpAudioProcessingTap,但它也只适用于本地文件。

有一篇很好的文章可以通过 AVAudioEngine 做到这一点 here