同时使用 DirectShow 播放多个 wav 文件并记录它们 C++

Posted

技术标签:

【中文标题】同时使用 DirectShow 播放多个 wav 文件并记录它们 C++【英文标题】:play multiple wav files using DirectShow at the same and record them C++ 【发布时间】:2011-11-04 10:54:16 【问题描述】:

我想创建一个示例应用程序,以便在 C++ 中同时播放多个 wav 文件。当一个文件开始播放时,我需要记录所有播放的 wav 文件的“声音、音频”。换句话说就是在播放的时候混合它们。

我是 DirectX 新手,我不知道应该使用 DirectX 的哪个组件:

我刚刚检查了这个链接:http://www.mycplus.com/tutorials/microsoft-direct-x-programming/directx-components/

我应该使用:

DirectShow 播放多个 wav 文件 记录一下,我应该使用 DirectX 中的哪个组件?

如果有示例开源应用程序,我也想知道。最好有一些示例源代码。

提前致谢。

【问题讨论】:

【参考方案1】:

首先,DirectShow 不是DirectX 的一部分。相反,它是核心 Windows SDK 和组件的一部分(不要被“Direct-”前缀混淆)。

Windows SDK 附带了一个很棒的工具:GraphEdit。在 MSDN 上也有描述:Using GraphEdit。

您无需实际编程即可在此处构建多播放图表,并大致了解事物的工作原理。你也可以在代码中做同样的事情。

录制可能是一件比较棘手的事情,稍后您将解决这个问题。您将决定是使用压缩还是现在,您喜欢哪种格式。对于简单的PCM.WAV,您将需要一个额外的过滤器,它可作为 Windows SDK 或其早期版本的示例提供:WavDest Filter Sample。

【讨论】:

实际上 DirectShow 在它被引入的时候曾经是 DirectX 的一部分(如果我没记错的话,它是 DirectX 5)。

以上是关于同时使用 DirectShow 播放多个 wav 文件并记录它们 C++的主要内容,如果未能解决你的问题,请参考以下文章

在 C 中使用 ALSA 以不同的音量播放多个 wav 文件

c#如何播放多个.wav文件,并设置每个文件的音量

JAVA按顺序播放多个wav音频

如何使用winsound同时播放多个声音?

如何同时录制使用 AVPlayer 和 wav 文件播放的歌曲?

.wav 文件格式的频道是啥?播放 wav 文件时是不是所有频道同时播放?