同时使用 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 文件