我用 C++ 编写了一个程序,它使用 WaveIn 获取麦克风输入并对其进行分析。我很想选择将输入源从麦克风输入更改为 Windows 的声音输出,但我真的不知道该怎么做,而且很多搜索结果都是用 C# 编写的,这没有帮助大部头书。为应用程序付费的人真的希望它使用 C++。
任何人都可以帮助我用 WaveIn 或其他 API 来捕获声音输出吗?该程序旨在仅在 Windows 7 上运行,我目前正在使用 Visual C++ 2010 进行编程,如果这对您有帮助的话。
在我的脑海中,这将需要您挂钩 waveOut 呼叫并捕获数据,然后将其用作麦克风的输入。这也意味着挂钩 waveIn。
当您打开 WaveIn 设备时,不要使用WAVE_MAPPER
作为设备 ID,而是明确设置设备
uDeviceID 指定的设备标识符从零变化到比存在的设备数量少一 -链接
您可以通过这种方式浏览所有设备:
WAVEINCAPS wc;
/* Get the number of Digital Audio Out devices in this computer */
int n_devices = waveInGetNumDevs();
for (int i = 0; i < n_devices; i++)
{
if (!waveInGetDevCaps(i, &wc, sizeof (WAVEINCAPS)))
printf("device id #%d: %s\n", i, wc.szPname);
}
根据要求,根据对 OP 的评论...
您需要选择不同的录音设备。许多 Win7 机器默认禁用“立体声混音”
转到录音设备并右键单击麦克风条目下的空白区域。您应该可以选择显示已禁用。然后,启用立体声混音,您应该能够选择它并以与麦克风完全相同的方式使用它