Преобразовать этот код, чтобы получить вход для микрофона?Исходный код класса включен - PullRequest
2 голосов
/ 18 марта 2011

Я использую библиотеку WindowsMedia, найденную здесь: http://www.ernzo.com/soundstudio.aspx

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

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

Хотя я не уверен, как это сделать.Кто-нибудь делал это раньше и знает, какие изменения необходимы?

IMediaStream pAudioStream = null;
_MediaStream = new MultimediaStream();
int mmr = _MediaStream.Initialize(STREAM_TYPE.STREAMTYPE_READ,    
                                 (int)AMMSF_INIT.AMMSF_NOGRAPHTHREAD, null);
mmr = _MediaStream.AddMediaStream(null, MSPurposeId.PrimaryAudio, 
                                  0, out pAudioStream);
MSStatus.ThrowExceptionForHR(mmr);

// open media file
mmr = _MediaStream.OpenFile(filePath, (int)AMMSF_OPEN.AMMSF_RUN);
MSStatus.ThrowExceptionForHR(mmr);

_AudioStream = new MMAudioStream();
mmr = _AudioStream.SetMediaStream(pAudioStream);
MSStatus.ThrowExceptionForHR(mmr);

_wfmt = new WaveFormat(_AudioStream.Format);
mmr = WaveDevice.Open(WaveConstants.WAVE_MAPPER, _wfmt);
WaveOutStatus.ThrowExceptionForHR(mmr);

WaveDevice - это IWaveDevice и типа WaveOutDevice.Это будет изменено на тип WaveInDevice, а WaveOutStatus на WaveInStatus, очевидно.

Вот код для класса, который я полностью создал.Я изменяю метод Listen ().

http://pastebin.com/TQTwRHTF

Этот класс был создан с использованием кода, предоставленного в проекте SoundStudio, с использованием WindowsMedia и PeakMeter, предоставленных Ernzo.

Если кто-то сможет выяснить, какие изменения должны заставить Listen () работать, он получит награду.(В настоящее время в нем есть код, который я вставил, пытаясь выяснить это, но Play () работает нормально).

1 Ответ

1 голос
/ 26 марта 2011

Существует демонстрация, которая показывает, как использовать waveIn. __waveInput_SoundStudioFrm.cs, просто переименуйте его в SoundStudioFrm.cs

...