Как программно получить текущий уровень звука? - PullRequest
12 голосов
/ 22 октября 2010

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

Мне не нужно проверять настройку громкости, но фактический уровень звука воспроизводимого аудиопотока.

Извините, я спрашивал о том, как это сделать в Windows, в Visual Studio 2008.

@ mikerobi: Это часть моих рассуждений - если это отображается на системном измерителе громкости, должен быть системный вызов, который может вернуть его

Ответы [ 3 ]

2 голосов
/ 22 октября 2010

Вот полезная ссылка для вызовов Windows API, и вот именно то, что вы ищете:

http://www.pinvoke.net/default.aspx/winmm.waveOutGetVolume


Поскольку требование изменилось, и вам не нужноУровень звука, который я предлагаю, может помочь в следующем:

Я думаю, вам нужно прочитать то, что воспроизводится в выходном потоке, и, проанализировав данные в некоторых алгоритмах, вы сможете решить, что что-то воспроизводится, илине.Для этого вам нужен MMDevice API

http://msdn.microsoft.com/en-us/library/dd316556(v=VS.85).aspx

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

  • При каждом вызове необходимо заполнять множество структур.
  • Вы должны выполнять вызовы в определенном порядке.
  • Выделение ссылок на структуры.

И даже если вы добьетесь этого, вы не сможете предвидеть исходное поведение устройства.Удачи.

2 голосов
/ 22 октября 2010

Это хороший вопрос.Ответ для 32-битных приложений Windows заключается в подключении к winmm.dll и другим низкоуровневым библиотекам управления звуком.В C # я создал бы класс-оболочку, содержащий прототипы методов extern:

public class MyAudioWrapper
{
   [DllImport("winmm.dll", EntryPoint = "waveOutGetVolume")]
   public extern void GetWaveVolume(IntPtr devicehandle, out int Volume);

   ...
}

Посмотрите на эту ссылку для списка аудио методов Windows;Вы можете использовать микшер или просто контроллер выхода, чтобы установить громкость.То, что вы хотите использовать, будет определять, какие библиотеки импортировать.Вам придется изучить, как лучше всего определить прототип и как получить дескриптор устройства аудио / микшера.

1 голос
/ 22 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...