Как мне захватить звук, который воспроизводится? - PullRequest
26 голосов
/ 17 октября 2008

Кто-нибудь знает, как программно захватывать воспроизводимый звук (то есть все, что исходит от звуковой карты, а не устройства ввода, такие как микрофон).

Ответы [ 4 ]

17 голосов
/ 17 октября 2008

Предполагая, что вы говорите о Windows, по сути, есть три способа сделать это.

Первый - открыть основной выход аудиоустройства в качестве источника записи. Это возможно только тогда, когда драйвер поддерживает это, хотя большинство из них в наши дни. Распространенными именами для виртуального устройства являются «Что вы слышите» или «Волновой выход». Вам потребуется использовать подходящий API (см. WaveIn или DirectSound в MSDN) для захвата.

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

Это означает, что ни один из этих параметров не будет гарантированно работать на ПК с произвольным оборудованием.

Последняя альтернатива - использовать виртуальное аудиоустройство, такое как Virtual Audio Cable . Если это устройство установлено в качестве устройства воспроизведения по умолчанию в Windows, то все приложения с хорошим поведением будут воспроизводиться через него. Затем вы можете выполнить запись с того же устройства, чтобы получить суммарный результат. Пока у вас есть контроль над устройством, которое использует приложение, которое вы хотите записать, эта опция всегда будет работать.

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

3 голосов
/ 17 октября 2008

Вы можете использовать аудиоинтерфейс Waveform, есть статья MSDN о том, как получить к нему доступ за PInvoke.

Для захвата воспроизводимого звука вам просто нужно открыть устройство воспроизведения вместо микрофона. Открыто для ввода, конечно, не для вывода; -)

0 голосов
/ 24 февраля 2009

Вы должны включить устройство стерео микс. если вы сделаете это, прямой звук найдет это устройство.

0 голосов
/ 04 ноября 2008

Если вы использовали OSX, Audio Hijack Pro от Rogue Amoeba , вероятно, самый простой способ.

В любом случае, почему бы просто не зациклить звук обратно на линии и записать это? Это очень простое решение. Просто подключите кабель к выходному аудиоразъему, а линию к гнезду и начните запись.

...