2011-03-18 52 views
2

我使用了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項目提供的代碼,使用Ernzo提供了WindowsMedia和PeakMeter創建。

如果有人能夠弄清楚使Listen()工作的變化,那將會爲他們贏得賞金。 (它目前有我試圖找出它的代碼,但Play()工作正常)。

+2

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/52312bbc-5fa2-491a-b3bd-aa7267fc2a8c – 2011-03-23 01:26:08

+0

爾加的當然你可以把我連接到一個看起來可以工作的人。不幸的是,其中的代碼超過了我的技能水平,並試圖將我已經編寫的代碼轉換爲使用該代碼的難度。不知道評論是否給予聲望,但是+1。 – 2011-03-24 16:06:36

回答

1

有一個演示,顯示如何使用waveIn。 __waveInput_SoundStudioFrm.cs,只需將其重命名爲SoundStudioFrm.cs

+1

再次感謝Ernzo:p – 2011-03-26 02:36:49