Как определить, воспроизводится ли звук на компьютере с Windows XP?

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

2 ответа

Решение

Вопрос был легкий, но ответ сложный. Вам нужно будет использовать 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;

ОБНОВИТЬ

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

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

Другие вопросы по тегам