C#采集麥克風話筒聲音


 

在項目中,我們會需要錄制麥克風的聲音。比如錄制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源碼下載
點擊下載源碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM