在項目中,我們會需要錄制麥克風的聲音。比如錄制QQ聊天時自己說的話。那么如何采集呢?當然是采用SharpCapture!下面開始演示關鍵代碼,您也可以在文末下載全部源碼:
設置授權
第一步:在引用了SharpCapture.dll之后,調用SharpCapture方法之前,一定要先通過下面代碼來設置授權信息,如果是試用版,直接輸入Test即可。
KeyMgr.SetKey("Test");
獲取IMicrophoneCapture的示例
從之前的一篇博文中,我們介紹了一張圖看懂SharpCapture,從那篇文章我們可以看出,SharpCapture通過IMicrophoneCapture采集聲卡的聲音數據。那么如何獲取該接口的示例,從而使用該接口提供的各個方法呢?請看下面的代碼:
//麥克風采集,默認采集第一個麥克風
microphone = CaptureFactory.GetMicrophoneCapture(0);
綁定事件
獲取到了IMicrophoneCapture的示例后,為其綁定事件AudioDataCaptured。每當引擎采集到聲音數據,就會將數據上交給該事件的響應函數上,您就可以進行下一步的處理,比如保存為音頻文件。
//注冊采集到聲音數據的事件,每當采集到聲音數據,就通過該事件上報
microphone.AudioDataCaptured += new SGDelegate<byte[]>(MicrophoneAudioDataCaptured);
處理數據
可以在獲取到聲音字節流后進行后續處理。
/// <summary>
/// 采集到聲音數據
/// </summary>
/// <param name="audioData">聲音數據</param>
public void MicrophoneAudioDataCaptured(byte[] audioData)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new SGDelegate<byte[]>(MicrophoneAudioDataCaptured), audioData);
}
else
{
//寫入wav文件中
if (microphoneWav != null)
{
microphoneWav.WriteAudioData(audioData);
}
}
}
開始采集
處理完上述步驟后,就可以開始采集了。如下:
microphone.Start();
停止采集
您可以通過下面的代碼停止采集:
microphone.Stop();
demo源碼下載
點擊下載源碼