我使用了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()工作正常)。
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/52312bbc-5fa2-491a-b3bd-aa7267fc2a8c – 2011-03-23 01:26:08
尔加的当然你可以把我连接到一个看起来可以工作的人。不幸的是,其中的代码超过了我的技能水平,并试图将我已经编写的代码转换为使用该代码的难度。不知道评论是否给予声望,但是+1。 – 2011-03-24 16:06:36