在 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 &gt; 0 ) 是不必要的吗? ?

以上是关于在 C++ (Windows) 中选择录制设备的主要内容,如果未能解决你的问题,请参考以下文章

苹果电脑windows系统搜不到自家wifi,怎么解决?

如何在 Windows 中更改默认播放和录制设备名称?

C++ 在 Linux 中录制 PCM 流

用于播放/录制音频(.wav、.ogg)的 C++ 多平台库

如何在 Windows 上使用 C++ 在特定音频设备上播放声音?

如何选择使用哪个设备录制(Python PyAudio)