0

我偶然发现了一些代码来枚举我的麦克风设备(在一些帮助下),并且能够从每个设备中获取“友好名称”和“clsid”信息。

我已经对 GraphEd.exe 做了一些修改,试图弄清楚如何从 directshow 获取音频并将其写入文件(我目前不关心格式,wav 应该没问题),但似乎无法找到正确的组合。

我读过的一篇文章链接到这个 Windows SDK 示例,但是当我检查代码时,我最终对如何使用该代码感到非常困惑,即。设置输出文件,或指定要使用的音频捕获设备。

我还看到了一篇 codeguru 文章,它有一个很好的录音机,但它没有选择音频设备的界面,我似乎无法找到它静态选择要使用的录音设备的位置。

我想我最感兴趣的是弄清楚如何使用 Windows SDK 示例,但是对这两种方法中的任何一种的任何解释都会很棒。

编辑:我应该提到我作为一个win32 COM程序员的知识和能力在规模上非常低,所以如果这很容易,请像我五岁一样给我解释一下。

4

2 回答 2

3

使用 DirectShow 将音频录制到文件中需要您构建正确的过滤器图,您应该已经知道了。零件包括:

  1. 您通过名字对象(不是 CLSID!)实例化的设备本身,它通常是 PCM 格式
  2. 将流转换为容器格式的多路复用器组件
  3. File Writer Filter 接受文件兼容的流并写入文件

棘手的时刻是 #2,因为没有可用的标准组件。但是,Windows SDK 示例包含缺少的部分 - WavDest 过滤器示例。构建它并使其准备好使用,您可以构建一个图表,将设备记录到 .WAV 文件中。

您的图表将如下所示,并且它也很容易以编程方式构建:

在此处输入图像描述

我注意到我在 Google Earth 中安装了 WavDest 的一个变体——如果你自己构建它时遇到麻烦,你将寻找预构建的二进制文件。

于 2012-10-12T20:06:33.050 回答
0

您可以指示 ffmpeg 从 directshow 设备录制,并输出到文件。

于 2012-11-26T19:37:06.540 回答