C++ / W32 - 录制声音、Direct Show 或 WaveInOpen?

Posted

技术标签:

【中文标题】C++ / W32 - 录制声音、Direct Show 或 WaveInOpen?【英文标题】:C++ / W32 - Recording sound, Direct Show or WaveInOpen? 【发布时间】:2011-08-11 10:00:24 【问题描述】:

在考虑 WinXP、Vista、Win7++ 时选择什么:

使用 Direct Show / Direct ... 录制音频?

使用经典 WaveInOpen(我曾在某处看到有人说这将在 W7/W8 中过时 - 可能吗?)

附言。我需要一个回调功能,将缓冲区传递给编码器。

谢谢!

【问题讨论】:

【参考方案1】:

WaveIn 易于使用,网上有大量示例代码,它会以您需要的方式为您提供回调。

DirectSound 使用循环缓冲区,设置起来可能有点麻烦,而且很可能您需要处理循环缓冲区而不是“仅仅填充缓冲区”。然而,DirectSound 可以让您更严格地控​​制音频,即延迟更好一些。

IMO,Microsoft 不太可能弃用/删除 Wave API。他们会破坏成千上万的应用程序。实际上,我认为 MS 从未从 Windows 中删除过核心 API。

所以为了简单起见,我会选择 Wave API。

【讨论】:

说得好,幸运的是我已经准备好了 WaveAPI 包装类。感谢您提供信息,我只需要确认 Wave API 正在使用中。

以上是关于C++ / W32 - 录制声音、Direct Show 或 WaveInOpen?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我使用 WinAPI C++ 录制的声音无法正常播放?

使用 C++ 或 C# 实时录制声音

录制发送到扬声器的声音

在 C++ (Windows) 中选择录制设备

C++ 在 Linux 中录制 PCM 流

在 C++ 中录制时从设备获取声级