3

我用 C++ 编写了一个程序,它使用 WaveIn 获取麦克风输入并对其进行分析。我很想选择将输入源从麦克风输入更改为 Windows 的声音输出,但我真的不知道该怎么做,而且很多搜索结果都是用 C# 编写的,这没有帮助大部头书。为应用程序付费的人真的希望它使用 C++。

任何人都可以帮助我用 WaveIn 或其他 API 来捕获声音输出吗?该程序旨在仅在 Windows 7 上运行,我目前正在使用 Visual C++ 2010 进行编程,如果这对您有帮助的话。

4

3 回答 3

0

在我的脑海中,这将需要您挂钩 waveOut 呼叫并捕获数据,然后将其用作麦克风的输入。这也意味着挂钩 waveIn。

于 2012-10-18T13:13:46.903 回答
0

当您打开 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); 
  }
于 2012-10-18T13:59:13.357 回答
0

根据要求,根据对 OP 的评论...

您需要选择不同的录音设备。许多 Win7 机器默认禁用“立体声混音”

转到录音设备并右键单击麦克风条目下的空白区域。您应该可以选择显示已禁用。然后,启用立体声混音,您应该能够选择它并以与麦克风完全相同的方式使用它

于 2012-10-18T14:20:01.123 回答