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

Я пытаюсь написать код для захвата микрофона и стереофонического микса с фильтрами DirectShow. Сначала я пытаюсь настроить фильтры с помощью GraphEdit из Windows SDK. Я устанавливаю устройства захвата на микрофон и стереомикшер, затем подключаю контакты захвата обоих устройств к входам 01 и 02 мультиплексора AVI, а затем подключаю контакт AVI Out к входу устройства записи файлов. Когда я запускаю график, я получаю

Этот график не может воспроизводиться. Неопределенная ошибка (Код возврата: 0x80004005)

Я искал эту ошибку совсем немного, и я не могу найти ответ.

Если я попытаюсь подключить их отдельно к фильтру WAV Dest для каждого из них, я получаю ту же ошибку. Почему-то не могу понять, не дает заснять оба. Эмулирует ли StereoMix микрофон при захвате с него?

Если я попытаюсь захватить их по одному, это сработает, но мне нужно захватить оба одновременно. Если я настрою микрофон на вывод на динамики, то смогу записать оба из них, но это мне не очень поможет, потому что пользователь может слышать себя в динамиках, что действительно может отвлекать.

Я также пытался и преуспел в записи петли с помощью WASAPI, но мне нужна некоторая обратная совместимость, поскольку запись петли с помощью 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