在項目中,咱們可能須要同時錄製聲卡的聲音和麥克風的聲音,好比直播間,在線教學。那麼如何實現呢?固然是採用SharpCapture!下面開始演示關鍵代碼,您也能夠在文末下載所有源碼:函數
設置受權
第一步:在引用了SharpCapture.dll以後,調用SharpCapture方法以前,必定要先經過下面代碼來設置受權信息,若是是試用版,直接輸入Test便可。post
KeyMgr.SetKey("Test");
獲取IMixer的示例
從以前的一篇博文中,咱們介紹了一張圖看懂SharpCapture,從那篇文章咱們能夠看出,SharpCapture經過IMixer進行混音,混音就是指將聲卡的聲音和麥克風的聲音錄製爲一路聲音,方便後續處理。那麼如何獲取該接口的示例,從而使用該接口提供的各個方法呢?請看下面的代碼:ui
//麥克風採集,默認採集第一個麥克風 microphone = CaptureFactory.GetMicrophoneCapture(0); //聲卡數據採集 soundcard = CaptureFactory.GetSoundcardCapture(); //建立混音器 mixer = CaptureFactory.GetAudioMixter(microphone, soundcard, SoundcardMixMode.DoubleChannel, true);
混音器須要您傳入聲卡採集器和麥克風採集器,同時設置混音的方式,好比這裏是左右聲道都參與混音,同時輸出時保留雙聲道.若是您不知道該如何設置,能夠使用該設置便可.this
綁定事件
獲取到了IMixer的示例後,爲其綁定事件MixedAudioDataCaptured。每當引擎採集到聲音數據並混音以後,就會將數據上交給該事件的響應函數上,您就能夠進行下一步的處理,好比保存爲音頻文件。url
//註冊採集到聲音數據的事件,每當採集到聲音數據,就經過該事件上報 mixer.AudioMixed += new SGDelegate<byte[]>(MixedAudioDataCaptured);
處理數據
能夠在獲取到聲音字節流後進行後續處理。spa
/// <summary> /// 採集到聲音數據 /// </summary> /// <param name="audioData">聲音數據</param> public void MixedAudioDataCaptured(byte[] audioData) { if (this.InvokeRequired) { this.BeginInvoke(new SGDelegate<byte[]>(MixedAudioDataCaptured), audioData); } else { //寫入wav文件中 if (mixWav != null) { mixWav.WriteAudioData(audioData); } } }
開始採集
處理完上述步驟後,就能夠開始採集了。以下:.net
//開始採集和混音 microphone.Start(); soundcard.Start();
中止採集
您能夠經過下面的代碼中止採集:code
//中止採集和混音 microphone.Stop(); soundcard.Stop();
demo源碼下載
點擊下載源碼blog