2011-12-17 2 views
0

Je souhaite capturer l'audio à la fois du micro et du haut-parleur - séparément. Comment puis-je les distinguer? Je peux capturer l'un ou l'autre en utilisant l'API Wave, par exemple, WaveInOpen(). Lorsque j'énumère les périphériques en utilisant waveInGetNumDevs() et waveInGetDevCaps()/waveoutGetDevCaps(), il ne semble y avoir aucune information liée à un périphérique de point final particulier (par exemple, micro ou haut-parleur). Je ne vois ce qui suit, qui sont des dispositifs adaptateur:Son provenant du micro et du son du haut-parleur

HD Lire Entrée audio
HD Lire Sortie audio
Webcam ...

+3

Vous ne vous attendez pas à ce qu'un périphérique d'entrée audio * soit un microphone et qu'un périphérique * de sortie * soit un haut-parleur? –

+0

nah, il voulait probablement dire mixer comme haut-parleur – Ulterior

+0

Je veux dire, l'audio produit par les lecteurs multimédias. En utilisant exactement la même application, je peux capturer l'entrée micro et l'audio émis par les lecteurs multimédias. Le problème est qu'aucune des fonctions que j'utilise ne semble indiquer la source de l'audio. Bien sûr, je sais si c'est le micro ou le lecteur multimédia, mais pas mon application. – user732592

Répondre

0

J'ai fait aucune connaissance de l'API windows donc ma réponse n » t probablement le meilleur et il y a peut-être même de meilleurs moyens.

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 
    } 

Avec cela, vous serez en mesure de faire la distinction entre l'entrée (capture) et la sortie (rendu). (C'est ce que vous vouliez?)

Le code provient de this article. Vous pouvez le regarder pour les appels API et les bibliothèques, il pourrait même vous donner plus d'informations.

J'espère que c'est utile.

+0

Merci pour le conseil, mais j'ai oublié de mentionner que le code est pour XP - mon mauvais. – user732592