如何处理WASAPI流中的声音数据块而不将其写入文件? 我对WASAPI相当陌生,我尝试编写一个C++程序,它在主回放设备上查看音频流,并通过FFTW3在每个块上执行FFT,对结果做一些处理,然后丢弃块。到目前为止,我在WASAPI和fftw3上找到的每个示例都涉及到写入一个文件,然后打开该文件。可以直接处理波形块吗?

如何处理WASAPI流中的声音数据块而不将其写入文件? 我对WASAPI相当陌生,我尝试编写一个C++程序,它在主回放设备上查看音频流,并通过FFTW3在每个块上执行FFT,对结果做一些处理,然后丢弃块。到目前为止,我在WASAPI和fftw3上找到的每个示例都涉及到写入一个文件,然后打开该文件。可以直接处理波形块吗?,c++,winapi,audio,fftw,wasapi,C++,Winapi,Audio,Fftw,Wasapi,WASAPI音频捕获通常使用“刚刚捕获”的音频数据填充内存缓冲区,并将其传递回控制应用程序。“不写入文件”-这是它最初的工作方式。无论是否压缩,将数据写入媒体文件都需要额外的努力 您可能对以下内容感兴趣: CaptureSharedEventDriven-此示例应用程序使用核心音频API从用户指定的输入设备捕获音频数据,并将其写入当前目录中唯一命名的.WAV文件。此示例演示事件驱动的缓冲 CaptureSharedTimerDriven-此示例应用程序使用核心音频API从用户指定的输入设备捕获

WASAPI音频捕获通常使用“刚刚捕获”的音频数据填充内存缓冲区,并将其传递回控制应用程序。“不写入文件”-这是它最初的工作方式。无论是否压缩,将数据写入媒体文件都需要额外的努力

您可能对以下内容感兴趣:

  • CaptureSharedEventDriven-此示例应用程序使用核心音频API从用户指定的输入设备捕获音频数据,并将其写入当前目录中唯一命名的.WAV文件。此示例演示事件驱动的缓冲
  • CaptureSharedTimerDriven-此示例应用程序使用核心音频API从用户指定的输入设备捕获音频数据,并将其写入当前目录中唯一命名的.WAV文件。此示例演示计时器驱动的缓冲

两者都向您展示了数据如何从API通过内存缓冲区传输到文件。您可以在从API获得数据的那一刻应用FFT,然后再将其发送到样本中的文件。

听起来您的问题完全与FFTW有关,而与WASAPI无关?我想更重要的是,我想知道WASAPI如何返回RIFF块,以及我需要知道什么来处理这些块。