我使用了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