Как создать драйвер аудиоустройства для захвата звука, который воспроизводит Mac?

Я создал некоторый код для захвата экрана в файл mov с помощью AV Foundation, и мой следующий шаг — также записать, какие звуки воспроизводит Mac, для последующего добавления к записанному видео. Я немного покопался и, похоже, мне может понадобиться реализовать какой-то аудиодрайвер для захвата звука. Любые указатели на то, как этого добиться?

Я предполагаю, что AudioUnit и IOKit понадобятся каким-то образом...

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


person Equinox2000    schedule 11.08.2012    source источник


Ответы (2)


В книге Оле Генри Халворсена и Дугласа Кларка Программирование ядра OS X и iOS есть пример, который делает довольно много именно этого. Вы можете скачать пример с веб-сайта книги, в самой книге, конечно же, объясняется, как это работает.

Раскрытие информации: я был одним из технических рецензентов этой книги. (Я не получаю гонорары и т. д.)

person pmdj    schedule 12.08.2012
comment
Теперь мне нужно решить, как направить звук на устройство обратной петли, чтобы я мог захватить его вход, надеюсь, это можно сделать без отключения текущих воспроизводимых звуков... - person Equinox2000; 13.08.2012
comment
@Equinox2000 Equinox2000, если я правильно помню, пример генерирует как устройство вывода, так и устройство ввода. Вы можете записывать с устройства ввода (похожего на микрофон) и сохранять его на диск с помощью обычной программы аудиозаписи, а также установить устройство вывода в качестве выхода системы по умолчанию. Если вы дополнительно хотите прослушивать звук одновременно, вам также необходимо передать захваченный звук на звуковую карту. Вы можете либо сделать это в пользовательском пространстве (написать небольшую программу, которая захватывает звук с микрофона и перенаправляет его на динамики, а также на диск), либо, если задержка критична, модифицировать код ядра. - person pmdj; 13.08.2012
comment
для своих целей я, вероятно, изменю код ядра, как уже упоминалось, чтобы также передавать на динамики. Я знаю, что такие приложения, как ScreenFlow/AudioHijack/WireTap, работают по похожему методу, но странно, что вы не видите аудиоустройство, указанное в системе - настройки - звук, как всегда что-то вроде logmein... - person Equinox2000; 13.08.2012
comment
@ Equinox2000 Я могу только предположить, что они подключаются к аудиопотоку в другом месте. Я не эксперт по аудиосистеме в OSX, поэтому ничем не могу помочь, кроме того, что уже сказал. - person pmdj; 14.08.2012

Вы также должны проверить исходный код Soundflower:

http://code.google.com/p/soundflower/

person Nik Reiman    schedule 18.08.2012