Я использую библиотеку 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 () работает нормально).