在 C++ (Windows) 中选择录制设备
Posted
技术标签:
【中文标题】在 C++ (Windows) 中选择录制设备【英文标题】:Select recording device in C++ (Windows) 【发布时间】:2012-05-28 11:55:25 【问题描述】:如何在 C++ , Windows 中选择录音设备。我想从 PC 录制声音,并且我想要一个 C++ 中的函数,它可以选择设备:线路、麦克风或立体声混音。我不知道该怎么做。请向我展示示例或给我链接以了解此内容。
我在 C++ 中找到了一些相关的东西,但效果不佳: http://forums.codeguru.com/showthread.php?t=449213
请帮忙。
【问题讨论】:
【参考方案1】:您可以尝试拨打waveInGetNumDevs
waveInGetNumDevs 函数返回波形-音频的数量 系统中存在输入设备。
UINT waveInGetNumDevs(VOID);
返回设备的数量。返回值为零意味着没有 设备存在或发生错误。
这是一个例子:
#include <tchar.h>
#include <windows.h>
#include "mmsystem.h"
#pragma comment(lib, "winmm.lib")
int _tmain( int argc, wchar_t *argv[] )
UINT deviceCount = waveInGetNumDevs();
if ( deviceCount > 0 )
for ( int i = 0; i < deviceCount; i++ )
WAVEINCAPSW waveInCaps;
waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) );
//Your code here
return 0;
【讨论】:
您好,例如,谢谢,但我的意思是别的:如何将录制设备设置为默认值?例如,当我开始录制时,如果默认设备设置为麦克风,则我无法从 Stero Mix 录制,但我只需要从 Stereo Mix 录制,在开始录制之前,我需要将其设为 Windows 中的默认设备以允许我录制来自混音器。 嘿!这里有一个问题: sizeof( WAVEINCAPS ) 必须是 sizeof( WAVEINCAPSW ) 你不觉得if ( deviceCount > 0 )
是不必要的吗? ?以上是关于在 C++ (Windows) 中选择录制设备的主要内容,如果未能解决你的问题,请参考以下文章
用于播放/录制音频(.wav、.ogg)的 C++ 多平台库