2014-01-02 3 views
1

Можно ли использовать NAudio для установки уровня громкости для конкретного приложения? {Над Windows 7}Управление уровнем громкости конкретного приложения

Я нашел this thread, обращаясь к вопросу, предлагая самостоятельно реализовать искомое решение по WASAPI, но я бы предпочел более простое решение, оптимально - с использованием NAudio оберток для этого , если таковые имеются.

Я также нашел this WASAPI-based solution, который (для меня, более 32-разрядной Windows 7 Professional) не перечисляет все звукозаписывающие приложения и, следовательно, не применим.

Что я на самом деле пытаюсь выполнить: Я использую коммерческое приложение, играющее длинную последовательность аудиофайлов различных качеств и звуковых уровней. Я бы хотел применить AGC (Automatic Gain Control, то есть нормализацию уровня громкости) к этому приложению, чтобы по крайней мере «размыть» (если вообще не устранить) разницу в уровне громкости между воспроизведенными треками.

Как 1-й этап, я мог предположить, что это приложение является единственным, производящим звук в системе, и обрабатывает только основные образцы аудиодорожек Windows, но я не знаю, как это сделать. Может ли NAudio вмешиваться в аудио-дорожку, изменяя звуковые образцы (т. Е. Усиливая их), прежде чем они достигнут гнезда динамиков?

Обратите внимание:, что просто изменение основного громкоговорителя Windows не будет делать трюк, поскольку оно не будет отражено в амплитуде выборок, снятых с помощью NAudio/WASAPI Loopback.

NAudio был бы предпочтительным подходом, но НЕ обязательным.

+0

Вы измеряете громкость, захватывая его назад? Почему вы не можете нормализовать его перед отправкой на устройство вывода? Это имеет большее значение, принимая во внимание раздел «пытается выполнить». –

+0

Как я могу нормализовать звук *, не созданный мной * (но скорее внешним, готовым к приложению), прежде чем он будет отправлен на устройство вывода? – Bliss

+0

Не было никакого упоминания о том, что приложение не ваше, на самом деле. Хотя я мог предположить, что это важная деталь. Похоже, что подача на реальное или виртуальное устройство вывода звука неизбежно. –

ответ

3

У NAudio есть обертки для многих частей Windows Core Audio API, но не содержит [IAudioSessionEnumerator][1], о котором упоминает Роман в the answer you linked to. Кажется, эта часть API была введена с Windows 7.

Так что я боюсь, что NAudio вам не поможет, и вам нужно будет списать код Roman на C#, что потребует от вас создания оберток для взаимодействия для IAudioSessionEnumerator и связанных с ним интерфейсов, таких как IAudioSessionManager и IAudioSessionControl.

+0

Спасибо за ваш ответ. На самом деле, я уже пробовал фрагмент Роман предлагает [по его ответу] (http://stackoverflow.com/a/17387658/7532), но он не работает (для меня, по 32-разрядной Windows 7 Professional), поскольку он не перечисляет все звуковые приложения в системе. – Bliss

+0

Марк, я был бы признателен, если вы посмотрите на новый пункт «**, что я на самом деле пытаюсь выполнить **», добавленный к вопросу. – Bliss

Смежные вопросы