2011-12-17 15 views
0

マイクとスピーカーの両方からオーディオを取り込みたいと思います。どのように私はそれらを区別することができますか?私は、WaveInOpen()などのWave APIを使用して、どちらか一方をキャプチャできます。マイクからの音とスピーカーからの音

waveInGetNumDevs()とwaveInGetDevCaps()/ waveoutGetDevCaps()を使用してデバイスを列挙すると、特定のエンドポイントデバイス(マイクやスピーカーなど)に関する情報がないようです。私は唯一のアダプタ装置であり、以下を参照してください:私はしました

HD読むオーディオ入力
HD読むオーディオ出力
ウェブカメラ...

+3

オーディオ*入力*デバイスがマイクで*出力*デバイスがスピーカーであるとは思わないでしょうか? –

+0

nah、彼はおそらくスピーカーとしてミキサーを意味しました – Ulterior

+0

私は、メディアプレーヤーから出力された音声を意味します。まったく同じアプリを使用して、私はメディアプレーヤーが発するマイク入力とオーディオをキャプチャできます。問題は、私が使用している機能のどれも、オーディオのソースを示すようには見えないということです。もちろん、私はそれがマイクかメディアプレーヤーかどうかを知っていますが、私のアプリではありません。 – user732592

答えて

0

を実際のWindows APIの知識がないので、私の答えのISN」おそらく最高で、おそらくもっと良い方法があります。

HRESULT hr = CoInitialize(NULL); 
    IMMDeviceEnumerator *pEnum = NULL; 
    hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pEnum); 
    if(SUCCEEDED(hr)) 
    { 
     IMMDeviceCollection *pDevices; 
     // Enumerate the output devices. 
     hr = pEnum->EnumAudioEndpoints(eAll, DEVICE_STATE_ACTIVE, &pDevices); 
     // You can choose between eAll, eCapture or eRender 
    } 

これで、入力(キャプチャ)と出力(レンダリング)を区別することができます。 (これはあなたが欲しいものです)

コードはthis articleから取られています。あなたは、正しいAPI呼び出しとライブラリについてそれを見るかもしれません、それはさらにあなたにいくつかの情報を与えるかもしれません。

希望します。

+0

アドバイスをいただきありがとうございますが、私はコードがXP用であることを言い忘れました - 私の悪いです。 – user732592

関連する問題