天天看點

關于調整“錄音”麥克風音量而不是“播放”中麥克風音量的問題

一般情況下如下代碼用來調節錄音"麥克風音量

代碼:

// 打開Mixer裝置

mixerOpen( &m_hMixer, 0, 0, 0, MIXER_OBJECTF_MIXER );

MIXERLINE MixerLine;

// 結構體的大小

MixerLine.cbStruct = sizeof(MixerLine);

// 錄制裝置總線

MixerLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;

// 得到錄制總線中的連接配接數

mixerGetLineInfo( (HMIXEROBJ)m_hMixer, &MixerLine,

MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE );

// 将連接配接數儲存

DWORD dwConnections = MixerLine.cConnections;

// 準備擷取麥克風裝置的ID

DWORD dwLineID = 0;

for ( DWORD i = 0; i < dwConnections; i++ )

{

// 枚舉每一個裝置,當Source的ID等于目前的疊代記數

MixerLine.dwSource = i;

// 根據SourceID獲得連接配接的資訊

mr = mixerGetLineInfo( (HMIXEROBJ)m_hMixer, &MixerLine,

MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_SOURCE );

// 判斷函數執行錯誤

if ( mr != 0 )

{

break;

}

// 如果目前裝置類型是麥克風,則跳出循環。

if ( MixerLine.dwComponentType ==

MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE )

{

dwLineID = MixerLine.dwLineID;

break;

}

}

// 如果沒有找到,傳回失敗。

if ( dwLineID == 0 )

{

return FALSE;

}

但有時會出錯這是因為mixerOpen( &m_hMixer, 0, 0, 0, MIXER_OBJECTF_MIXER )中裝置id不對而導緻的錯誤

預設輸入裝置id為0 ,但有些為1,是以改為mixerOpen( &m_hMixer, 1, 0, 0, MIXER_OBJECTF_MIXER ) 即可。