gpt4 book ai didi

c++ - 将 directshow 音频设备录制到文件

转载 作者:行者123 更新时间:2023-11-28 00:53:18 25 4
gpt4 key购买 nike

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

我对 GraphEd.exe 做了一些修改,试图找出如何从 directshow 中获取音频并将其写入文件(我目前不关心格式,wav 应该没问题),并且可以' 似乎找到了正确的组合。

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

我还遇到了 codeguru article它有一个功能很好的录音机,但它没有用于选择音频设备的界面,而且我似乎无法找到它静态选择要使用的录音设备的位置。

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

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

最佳答案

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

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

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

您的图表将如下所示,并且它也可以通过编程轻松构建:

enter image description here

我注意到我有一个随 Google 地球一起安装的 WavDest 变体 - 如果您自己构建它有困难,您将寻找预构建的二进制文件。

关于c++ - 将 directshow 音频设备录制到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865632/

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