我正在使用此处的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()方法是我正在修改的方法。
此类是使用SoundStudio项目中提供的代码,使用Ernzo提供的WindowsMedia和PeakMeter创建的。
如果有人能够找出改变以使Listen()发挥作用,那将为他们赢得赏金。 (它目前有代码我试图解决它,但Play()工作正常)。
答案 0 :(得分:1)
有一个演示,演示如何使用waveIn。 __waveInput_SoundStudioFrm.cs,只需将其重命名为SoundStudioFrm.cs