【问题标题】:FFT (installTap) with offline rendering带离线渲染的 FFT (installTap)
【发布时间】:2019-03-16 11:19:47
【问题描述】:

我发现 examples 可以使用 AVAudioNode.installTap 对播放音乐执行 FFT 分析,但我想知道如何做到这一点,但离线(一次性)在文件上。

我尝试将1024设置为maximumFrameCount

let maxNumberOfFrames: AVAudioFrameCount = 1024;
try engine.enableManualRenderingMode(.offline, format: format, maximumFrameCount: maxNumberOfFrames)

但是渲染的数量似乎很小(比如 1200 而不是我在带有内置音频分析功能的 JavaScript 中得到的 5000)。

我错过了什么吗?我是否应该直接在文件上进行 FFT 而无需离线渲染?怎么样?

【问题讨论】:

  • 你想达到什么目的?渲染后是否要对文件执行 FFT?
  • @SamBing 一般对文件执行 FFT(非实时,尽可能快)
  • @Nuthinking 你找到解决这个问题的方法了吗?我也遇到了同样的问题……
  • @DEADBEEF 使用带有离线渲染的 AVAudioEngine

标签: ios swift fft core-audio avaudioengine


【解决方案1】:

假设您只想执行分析而不修改用于播放的声音缓冲区,我建议您查看AVAudioSinkNode。您可能会使用 engine.mainMixerNode.installBus() 找到旧的解决方案,但这对于快速 FFT 来说效率很低,因为它不是 real 实时的。

【讨论】:

  • AVAudioSinkNode 似乎仅适用于 macOS 10.15+。除了engine.mainMixerNode.installBus(),你还有其他选择吗?
猜你喜欢
  • 1970-01-01
  • 2015-02-17
  • 2013-09-14
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多