Есть ли простой фильтр DirectShow, который может микшировать аудио одного и того же формата?

У меня есть приложение DirectShow, написанное на Delphi 6 с использованием библиотеки компонентов DSPACK. Я хочу иметь возможность микшировать звук, поступающий с выходных контактов от нескольких фильтров захвата, которые настроены на один и тот же формат мультимедиа. Есть ли фильтр с открытым исходным кодом или «образец SDK», который делает это?

Я знаю, что интеллектуальное микширование — это большое дело, и что для этого мне, скорее всего, придется купить коммерческую библиотеку. Но все, что мне нужно, это фильтр DirectShow, который может принимать волновой аудиовход с нескольких выходных контактов и выполнять прямое сложение полученных семплов. Я знаю, что есть Tee Filter для разделения одного потока на несколько потоков (один ко многим), но мне нужно что-то, что делает обратное (многие к одному), предпочтительно с проверкой формата при каждой попытке входного соединения, чтобы любой попытка присоединить выходной контакт с форматом носителя, отличным от уже добавленных, прерывается с ошибкой. Там что-нибудь есть?


person Robert Oschler    schedule 13.11.2011    source источник


Ответы (1)


Не уверен насчет чего-либо, доступного из коробки, однако это определенно будет сторонний компонент.

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

person Roman R.    schedule 14.11.2011
comment
Механика обработки данных действительно, как вы говорите, проста, но я обнаружил, что для выяснения того, от чего из обычного интерфейса фильтра преобразования я могу отказаться (возврат не реализован и т. д.), а что я должен поддерживать, требуется хороший степень изучения: (уведомления восходящего/нисходящего потока, согласование формата, поиск и т. д.). Пока решил обойтись без поиска так как он мне не нужен, с остальным разберусь позже. - person Robert Oschler; 14.11.2011