版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、c#c#實現(xiàn)錄音實現(xiàn)錄音0173301733本文由chongweiluo貢獻doc文檔可能在WAP端瀏覽體驗不佳。建議您優(yōu)先選擇TXT,或下載源文件到本機查看。C#中使用DirectSound錄音一.聲卡錄音的基本原理為了實現(xiàn)一個錄音的基本過程至少需要以下對象的支持:1.錄音設(shè)備對我們的PC設(shè)備就是聲卡.這個錄音設(shè)備可以進行的操作應(yīng)該有開始和關(guān)閉.2.緩沖區(qū)也就是錄制的聲音放在哪里的問題.二.DirectSound對錄音的描述模型1.D
2、irectSound對錄音的支持類Capture設(shè)備對象可以看作是聲卡的描述.CaptureBuffer緩沖區(qū)對象存放錄入的音頻數(shù)據(jù).Notify事件通知對象由于錄音是一個長時間的過程因此使用一個緩沖隊列(多個緩沖區(qū))接收數(shù)據(jù)每當(dāng)一個緩沖區(qū)滿的時候系統(tǒng)使用這個對象通知應(yīng)用程序取走這個緩沖區(qū)并繼續(xù)錄音.以上三個對象是進行錄音操作的主要對象由于在C中對DirectSound的操作DirectX幫助文檔中已經(jīng)有很詳細(xì)的說明這里就不再贅述了.本
3、文是針對ManagedCode.除了以上三個主要的DirectSound類還需要以下幾個輔助類.WaveFmat描述了進行錄制的聲音波形的格式例如采樣率單聲道還是立體聲每個采樣點的長度等等.Thread線程類由于錄音的過程是需要不斷處理緩沖區(qū)滿的事件因此新建一個線程對此進行單獨處理.AutesetEvent通知的事件當(dāng)緩沖區(qū)滿的時候使用該事件作為通知事件.三.代碼解析(SoundRecd類)1.需要引用的程序集usingSystemus
4、ingSystem.Windows.FmsusingSystem.ThreadingusingSystem.IO對DirectSound的支持usingMicrosoft.DirectXusingMicrosoft.DirectX.DirectSound2.SoundRecd的成員數(shù)據(jù)緩沖隊列的數(shù)目建立通知消息當(dāng)緩沖區(qū)滿的時候處理方法InitNotifications()mRecBuffer.Start(true)停止錄音publicv
5、oidRecStop()關(guān)閉通知消息if(null!=mNotificationEvent)mNotificationEvent.Set()停止錄音mRecBuffer.Stop()寫入緩沖區(qū)最后的數(shù)據(jù)RecdCapturedData()回寫長度信息mWriter.Seek(4Seekigin.Begin)mWriter.Write((int)(mSampleCount36))mWriter.Seek(40Seekigin.Begin)
6、寫文件長度mWriter.Write(mSampleCount)寫數(shù)據(jù)長度mWriter.Close()mWaveFile.Close()mWriter=nullmWaveFile=null4.內(nèi)部調(diào)用函數(shù)初始化錄音設(shè)備此處使用主錄音設(shè)備.調(diào)用成功返回true否則返回falseprivateboolInitCaptureDevice()獲取默認(rèn)音頻捕捉設(shè)備CaptureDevicesCollectiondevices=newCaptur
7、eDevicesCollection()枚舉音頻捕捉設(shè)備GuiddeviceGuid=Guid.Empty捉設(shè)備的ID音頻捕if(devices.Count0)deviceGuid=devices[0].DriverGuidelseMessageBox.Show(“系統(tǒng)中沒有音頻捕捉設(shè)備“)returnfalse用指定的捕捉設(shè)備創(chuàng)建Capture對象trymCapDev=newCapture(deviceGuid)catch(Direc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c#文獻翻譯---c#的優(yōu)點
- [c#畢設(shè)]用socket實現(xiàn)局域網(wǎng)辦公助理c#
- 基于C#實現(xiàn)部門物資管理.pdf
- c#模擬實現(xiàn)dhcp服務(wù)器
- c#下利用directsound實現(xiàn)聲音播放
- c#程序
- [c#畢設(shè)]c#人事管理系統(tǒng)
- c#爬蟲算法
- c#圖像處理
- c#快速入門
- c#文本操作
- c#命名規(guī)則
- c#編碼規(guī)范
- c#實驗指導(dǎo)
- c#命名規(guī)范
- c#作業(yè)答案
- 基于C#甘特圖控件的設(shè)計與實現(xiàn).pdf
- 基于c#的socket編程的tcp異步實現(xiàn)
- c#設(shè)計模式
- c#命名規(guī)范
評論
0/150
提交評論