DirectShow улавяне на звук от микрофон + стерео микс

Опитвам се да напиша някакъв код за улавяне както на микрофона, така и на стерео микса с DirectShow филтри. Първо се опитвам да настроя филтрите с помощта на GraphEdit от Windows SDK. Настройвам устройствата за улавяне на микрофон и стерео микс, след което свързвам щифтовете за улавяне от двете към вход 01 и вход 02 на AVI Mux и след това свързвам щифта AVI Out към входния щифт на File Writer. Когато пусна графиката, получавам

Тази графика не може да се възпроизведе. Неопределена грешка (Код за връщане: 0x80004005)

Търсих тази грешка доста и изглежда не мога да намеря отговор.

Ако се опитам да ги свържа отделно към филтър WAV Dest за всеки от тях, получавам същата грешка. По някаква причина, която не мога да разбера, не ми позволява да заснема и двете. StereoMix емулира ли микрофона, когато снимам от него?

Ако се опитам да заснема от тях един по един, това работи, но трябва да заснема и от двете едновременно. Ако настроя микрофона да извежда към високоговорителите, тогава мога да записвам и двата, но това не ми помага наистина, защото потребителят може да се чуе в високоговорителите, което наистина може да бъде разсейващо.

Също така се опитах и ​​успях да запиша loopback с WASAPI, но имам нужда от известна обратна съвместимост, тъй като записването на loopback с WASAPI работи само за Vista или Windows 7.

Разгледах PortAudio и FFmpeg, но не мога да си позволя да усложнявам програмата повече, отколкото вече е. Какво трябва да направя?


person Sebastian-Laurenţiu Plesciuc    schedule 17.01.2013    source източник
comment
Нямам време да проуча задълбочено вашия случай на употреба, но може би ще добавя виртуални аудио кабели като vb-audio.com/Cable/index.htm може да помогне...   -  person jj_    schedule 30.10.2020


Отговори (1)


Направих някои допълнителни изследвания. Явно това е наистина неприятна ситуация. Не намерих отговор относно DirectShow филтрите.

Някои компютри нямат звукови карти, които поддържат StereoMix. Единственото решение, което ще работи и на Windows XP, е да се създаде виртуален аудио драйвер с помощта на Windows DDK, като се зададе това като устройство по подразбиране, като се предаде буферът на истинското аудио устройство (за да не се пречи на аудио изхода) и на моето приложение.

В същото време мога да използвам DirectShow филтър за заснемане на аудио от микрофона.

Ето документацията от Microsoft за аудио драйвери: http://msdn.microsoft.com/en-us/library/windows/hardware/ff537871%28v=vs.85%29.aspx

Не съм много запознат с тези неща. Надявам се това да помогне на всеки, който е в същата ситуация. Ако някой има друго предложение, моля да ме уведоми.

person Sebastian-Laurenţiu Plesciuc    schedule 17.01.2013
comment
Трудно е да се каже защо имате проблема с едновременното заснемане от 2+ устройства. Би трябвало да е възможно дори под XP (не си спомням глобалното ограничение за това) и може да е специфично за хардуера, който използвате. - person Roman R.; 17.01.2013
comment
Пробвах същото на две различни машини. Едната работи със звукова карта VIA, а другата със звукова карта Realtek, и двете с правилно инсталирани драйвери. Същата неуточнена грешка се появява и на двамата. - person Sebastian-Laurenţiu Plesciuc; 17.01.2013
comment
този урок ще покаже как да откриете DirectShow и как да го запишете с вашия микрофон: free-tutorials.org/ - person Cătălin George Feștilă; 29.12.2014