Как определить, воспроизводится ли звук на компьютере с Windows XP? - PullRequest
4 голосов
/ 21 октября 2010

Можно ли определить, воспроизводится ли звук на компьютере с Windows XP?Помощь на любом языке будет полезна.Мне нужно написать программу, которая запускается постоянно и выводит текст в файл при воспроизведении звука.Мне не нужна какая-то конкретная информация о звуке, просто о том, играет ли звук.Мне все равно, действительно ли динамики включены или что-то в этом роде.

Ответы [ 2 ]

4 голосов
/ 21 октября 2010

Вопрос был простой, но ответ сложный. Вам нужно будет использовать DirectSound для достижения вашей цели. Я еще не тестировал свое решение, но вы можете попробовать вызвать IDirectSoundBuffer8 :: GetStatus () , а затем проверить возвращаемое значение параметра pdwStatus . Согласно MSDN, DSBSTATUS_PLAYING устанавливается, если буфер прослушивается.

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

  var
    dwStatus: DWORD;
    hResult: HRESULT;

  hResult := GetStatus(@dwStatus);
  if hResult = DS_OK then begin
    if dwStatus and DSBSTATUS_PLAYING <> 0 then
      ShowMessage('Sound card is playing sound now.');
  end;

UPDATE

Я только что нашел форум VB, в котором обсуждается как обнаружить тишину (нет звуковой карты). Загрузить DetSilence.zip . В подпункте DXRecord_GotWavData измените константы SilencePercent и NonSilencePercent на нужные вам значения.

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

Я подошел к этому нетрадиционно.Сначала я установил Virtual Audio Cable (http://www.ntonyx.com/vac.htm) и настроил его в качестве основного звукового устройства. Затем я настроил записывающее устройство для записи звука с основного устройства вывода. Это в основном означает, что я могу нажать «запись», и он будет записывать все, что происходитна звуковую карту. Затем я использовал модуль perl, Win32 :: SoundRec для записи звука в файл. Я периодически проверяю wav-файл на активность и, если он есть, я знаю, что звук воспроизводился. Я использовал другой модуль perl, Audio:: Wav, для анализа файла WAV и поиска активности (тишина или не тишина).

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