c++ - 如何在C++中使用DirectShow渲染音频

标签 c++ directshow

我刚刚开始使用 C++ 学习 DirectShow。我需要使用 DirectShow 录制音频并将其写入磁盘上的 WAV 文件。我听其他人说 Win 7 不允许使用 DirectShow 渲染音频。

此外,我想知道如何开始使用 DirectShow 和 C++ 重新编码音频?如果有示例源码就太好了。

提前致谢。

最佳答案

我认为您可能误解了其他人。 Windows Media Foundation 的目标是成为 DirectShow 的继承者,但 DirectShow 仍然是 very valid technology on Windows 7 .

完成您想做的事情最简单的事情就是使用 GraphEdit 来正确完成它。首先工具(我假设您想以编程方式执行此操作)。

创建一个包含您的音频设备的图表,WavDestFilter ,以及 file writer .

Source -> WavDest -> File Writer

播放图表。停止图表,您应该已经使用录制的音频创建了一个 .wav 文件。如果你能做到这一点,那么你需要以编程方式完成整个事情。 SDK 中有几个示例,向您展示如何以编程方式向图表添加过滤器并连接它们,这应该使您能够开始使用。

WRT WavDestFilter,IIRC 它可能不在所有版本的 SDK 中,您必须找到一个合适的。您还需要构建它,并对其进行 regsvr32,以便它将显示在 GraphEdit 中的可用过滤器列表中。

如果这一切看起来有点多,我会通读 MSDN 上的 DirectShow 文档,至少获得 DirectShow 的概述。

关于c++ - 如何在C++中使用DirectShow渲染音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003877/

相关文章:

c++ - Blackmagic DirectShow Framerate - 为什么我没有获得我的捕获设备支持的所有视频模式?

c++ - std::thread() 和 std::ref() 在类内部使用时导致构建错误

c++ - 查找歌曲的长度

delphi - 在 Delphi 6 应用程序中从 FOURCC ID 查找压缩机/过滤器友好名称?

windows - Windows 上用于视频捕获的 DirectShow 替代品

c++ - 在 Windows 10 上构建 Vivek 的虚拟相机时出现链接器错误?

c++ - 在 C++ 中使用 DirectShow 解码带有 H.264 流的 MP4 视频

c++ - 如何为 waitKey() 动态分配延迟值以便获得正确的 fps?

c++ - 使用 MinGW gcc 4.4.0 boost thread_interrupted 异常终止(),3.4.5 OK

C++ 将包含的库(Ref DLL)从根目录更改到另一个位置