使用WaveIn获得声音输出?

时间:2012-10-18 13:06:04

标签: c++ audio

我用C ++编写了一个程序,用WaveIn获取麦克风输入并对其进行分析。我喜欢选择将输入源从麦克风输入更改为Windows的声音输出,但我真的不知道该怎么做,而且很多搜索结果都是在C#中,这没什么用对我来说。支付申请费的人真的希望它是用C ++。

有没有人可以帮我解决使用WaveIn或其他API捕获声音输出的问题?该程序仅适用于Windows 7,我目前正在使用Visual C ++ 2010进行编程,如果这对您有帮助的话。

3 个答案:

答案 0 :(得分:0)

关闭我的头顶,这将要求您进行Hook waveOut调用并捕获数据,然后将其用作麦克风的输入。这也意味着钩波。

答案 1 :(得分:0)

当您打开WaveIn设备时,而不是使用WAVE_MAPPER作为设备ID,请明确设置设备

uDeviceID指定的设备标识符从零到一个小于设备数量的变化 - link

您可以通过以下方式浏览所有设备:

  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); 
  }

答案 2 :(得分:0)

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

您需要选择其他录制设备。许多Win7机器默认禁用“Stereo Mix”

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