2011年12月8日 星期四

錄音小程式

開法語言:C# 2008
基本上我的做法是直接呼叫別人寫好的物件,

物件上面都是裡面幾乎都式呼叫 directX Sound裡面的函式,

那他有可以輸出mp3檔案的部分,我目的只有輸出wav檔案,

所以以下範例都是以輸出wav檔案為主 :


//錄音的部分
Mp3SoundCapture _caputreObject;//錄音的物件



_caputreObject = new Mp3SoundCapture();
//傳入輸入的裝置
_caputreObject.CaptureDevice = (SoundCaptureDevice)this.comboBox1.SelectedItem;
//一般化音量
_caputreObject.NormalizeVolume = true;
//輸出的格式為wav
_caputreObject.OutputType = Mp3SoundCapture.Outputs.Wav;
//選擇輸出取樣資訊
_caputreObject.WaveFormat = (PcmSoundFormat)this.comboBox2.SelectedItem;
//開始錄音,傳入寫入檔案的檔名
_caputreObject.Start(this.saveFileDialog1.FileName);
//----------------------------------------------------------
//停止錄音
this._caputreObject.Stop();


//----------------------------------------------------------


//取得目前電腦輸入的裝置

foreach (SoundCaptureDevice device in SoundCaptureDevice.AllAvailable)
{
     this.comboBox1.Items.Add(device);
}
//---------------------------------------------------------
//取得可用的取樣資訊

foreach (PcmSoundFormat format in PcmSoundFormat.StandardFormats)
{
     this.comboBox2.Items.Add(format);
}

//---------------------------------------------------------

//輸出音樂檔案部分

SecondaryBuffer secBuffer;//解碼的緩衝區
Device secDev;//輸出的裝置

secDev = new Device();
secDev.SetCooperativeLevel(this, CooperativeLevel.Normal);
//把檔名餵進去緩衝區
this.secBuffer = new SecondaryBuffer(this.openFileDialog1.FileName, secDev);
//撥放緩衝區的資料
this.secBuffer.Play(0, BufferPlayFlags.Looping);
//--------------------------------------------------------


範例程式碼下載 : 程式碼
                               執行檔部分


錄音物件參考: http://www.codeproject.com/KB/audio-video/Mp3SoundCapture.aspx
撥放wav檔案參考: http://www.cnblogs.com/lonelyxmas/archive/2009/11/23/1608607.html






沒有留言: