gpt4 book ai didi

c++ - 如何处理WASAPI流中的声音数据 block 而不将它们写入文件?

转载 作者:行者123 更新时间:2023-12-03 07:03:18 25 4
gpt4 key购买 nike

我对WASAPI相当陌生,我正在尝试用C++编写一个程序,该程序在主要播放设备上查看音频流,并通过fftw3在每个块上执行FFT,对结果做一些处理,然后丢弃该块。到目前为止,我在WASAPI和fftw3上都能找到的每个示例都涉及写入文件,然后打开该文件。是否可以直接处理WAVE块?

最佳答案

WASAPI音频捕获通常使用“刚捕获的”音频数据填充内存缓冲区,然后将它们传递回控制应用程序。 “无需写入文件”-这是它首先工作的方式。在压缩或不压缩的情况下,需要付出额外的努力才能将数据写入媒体文件。

您可能对以下Windows SDK samples感兴趣:

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

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

    关于c++ - 如何处理WASAPI流中的声音数据 block 而不将它们写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898992/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com