Ответ 1
Взгляните на open-source WavTap, который является упрощенной вилкой open-source SoundFlower драйвер виртуальной звуковой карты. Это файл .kext, который, как я считаю, существенно влияет на то, что вы хотите.
Для справки, вот как работают некоторые популярные коммерческие опции с закрытым исходным кодом:
Rogue Amoeba Audio Hijack Pro
-Captures system audio через код, основанный на SoundFlower с открытым исходным кодом .kext
-Захватывает звук приложения, заменяя "патч-структуру" для нормального CoreAudio.framework при запуске приложения
-Захватывает уже запущенный звук приложения с помощью haxie "Application Enhancer" (APE) от Unsanity
Эти функции заклеймены как функция "Instant On" (InstantOn.kext).
Программное обеспечение Ambrosia WireTap Studio
-Captures аудио системы и звука приложения через встроенный .kext
Telestream ScreenFlow
-Captures system audio через встроенный .kxt. (версия 2.x использует varaudio.kext; в версии 3.x используется TelestreamAudio.kext )
Macsome Аудиозапись
-Неизвестный метод
Araelium Group Screenflick
-Captures system audio с помощью SoundFlower.kext
ОБНОВЛЕНИЕ # 1
После прочтения комментариев автора, основная цель состоит в том, чтобы улавливать звук системы без публикации виртуального аудио драйвера в качестве устройства (которое появляется в списке настроек системы) и без изменения текущего устройства вывода по умолчанию (или на по крайней мере, внешний вид устройства изменился).
SoundFlower: добавляет звуковое устройство в список при установке
WavTap: добавляет звуковое устройство в список при установке; автоматически выбирает устройство при запуске приложения WavTap; автоматически отменяет выбор устройства, когда приложение отключается и повторно выбирает предыдущее устройство
Audio Hijack Pro: добавляет звуковое устройство только при выборе аудиозахвата по умолчанию для системного звука; удаляет звуковое устройство, когда аудиозапись больше не выбрана и повторно выбирает предыдущее устройство
WireTap Studio: неизвестно
ScreenFlow: захватывает системный звук без изменения текущего устройства вывода по умолчанию и без публикации виртуального аудио драйвера в качестве устройства
ОБНОВЛЕНИЕ # 2
Цитата Джеффа Мура, инженера CoreAudio Apple, применительно к приложениям, таким как WireTap и Audio Hijack Pro:
"В системе нет API-интерфейсов, которые предоставят вам выход любого конкретного приложения или всего набора, идущего на аппаратное обеспечение... [Capture System Sound] не поддерживается системой, и эти люди должны быть умными. ничто не мешает вам делать то же самое, кроме того, как вы готовы замарать руки.
Дело в том, что аудиосистема Mac OS X была разработана в первую очередь для производительности. Это приводит нас к дизайну, где нелегко поддерживать функциональность, которую вы хотите, не налагая штрафных санкций. Таким образом, мы выбрали лучшую производительность за счет того, что не смогли предоставить эту функцию ".
Если вы хотите больше узнать об этом, ознакомьтесь с этими потоками в списке рассылки CoreAudio API:
"WireTap, CoreAudio API, и системный захват, и kexts..."
"Еще один вопрос о захвате звука, воспроизводимого программным обеспечением"
"Захват текущего воспроизводимого звука с помощью CoreAudio на Mac"
"'audio hijack'"
"мониторинг аудиовыхода системы, например, переход провода"
"Захват аудиоданных в файл"
"Зеркальное аудиовыход"
"Звук системы записи"
Релевантные вопросы SO:
Скрыть аудиоустройство с использованием бездорожья kext
Короче говоря, вы вряд ли найдёте примеры из Apple, которые этого достигнут, и вряд ли вы найдете открытый исходный код, который это сделает, если кто-то не чувствует себя очень щедро. Это, по-видимому, слишком ценно для информации.