【问题标题】:Select recording device in C++ (Windows)在 C++ (Windows) 中选择录制设备
【发布时间】:2012-05-28 11:55:25
【问题描述】:

如何在 C++ , Windows 中选择录音设备。我想从 PC 录制声音,并且我想要一个 C++ 中的函数,它可以选择设备:线路、麦克风或立体声混音。我不知道该怎么做。请向我展示示例或给我链接以了解此内容。

我在 C++ 中找到了一些相关的东西,但效果不佳: http://forums.codeguru.com/showthread.php?t=449213

请帮忙。

【问题讨论】:

    标签: c++ windows audio-recording


    【解决方案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 ) 是不必要的吗? ?
    猜你喜欢
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多