Как получить данные PCM из Wave Out - PullRequest
4 голосов
/ 21 сентября 2008

Как было бы возможно захватить аудио программно? Я внедряю приложение, которое в реальном времени транслирует рабочий стол в сети. Видео часть закончена. Мне нужно реализовать аудио часть. Мне нужен способ получить данные PCM со звуковой карты для подачи на мой кодировщик (реализовано с использованием Windows Media Format).

Я думаю, что ответ связан с функциями openMixer (), waveInOpen () в Win32 API, но я точно не знаю, что мне делать.

Как открыть нужный канал и как читать с него данные PCM?

Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 26 сентября 2008

Новые API-интерфейсы Windows Vista Core Audio поддерживают эту функцию в явном виде (так называемая Loopback Recording), так что если вы можете жить с приложением только для Vista, то этот путь подойдет.

См. Статью Loopback Recording на MSDN для получения инструкций о том, как это сделать.

4 голосов
/ 21 сентября 2008

Я не думаю, что есть прямой способ сделать это с помощью ОС - это функция, которая может (или не может) присутствовать на звуковой карте. Некоторые звуковые карты имеют петлевой интерфейс - Creative называет это «What U Hear». Вы просто выбираете это как вход, а не микрофон, и записываете с него, используя обычный waveInOpen (), о котором вы уже знаете.

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

...