青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0

[轉貼]音頻錄入

一、數字音頻基礎知識
Fourier級數:
任何周期的波形可以分解成多個正弦波,這些正弦波的頻率都是整數倍。級數中其他正線波的頻率是基礎頻率的整數倍?;A頻率稱為一級諧波。

PCM:
pulse code modulation,脈沖編碼調制,即對波形按照固定周期頻率采樣。為了保證采樣后數據質量,采樣頻率必須是樣本聲音最高頻率的兩倍,這就是Nyquist頻率。
樣本大?。翰蓸雍笥糜诖鎯φ穹壍奈粩担瑢嶋H就是脈沖編碼的階梯數,位數越大表明精度越高,這一點學過數字邏輯電路的應該清楚。

聲音強度:
波形振幅的平方。兩個聲音強度上的差常以分貝(db)為單位來度量,

計算公式如下:
20*log(A1/A2)分貝。A1,A2為兩個聲音的振幅。如果采樣大小為8位,則采樣的動態范圍為20*log(256)分貝=48db。如果樣本大小為16位,則采樣動態范圍為20*log(65536)大約是96分貝,接近了人聽覺極限和痛苦極限,是再線音樂的理想范圍。windows同時支持8位和16位的采樣大小。

二、相關API函數,結構,消息
對于錄音設備來說,windows 提供了一組wave***的函數,比較重要的有以下幾個:

打開錄音設備函數
MMRESULT waveInOpen(
LPHWAVEIN phwi, //輸入設備句柄
UINT uDeviceID, //輸入設備ID
LPWAVEFORMATEX pwfx, //錄音格式指針
DWORD dwCallback, //處理MM_WIM_***消息的回調函數或窗口句柄,線程ID
DWORD dwCallbackInstance,
DWORD fdwOpen //處理消息方式的符號位
);
為錄音設備準備緩存函數
MMRESULT waveInPrepareHeader( HWAVEIN hwi, LPWAVEHDR pwh, UINT bwh );
給輸入設備增加一個緩存
MMRESULT waveInAddBuffer( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh );
開始錄音
MMRESULT waveInStart( HWAVEIN hwi );
清除緩存
MMRESULT waveInUnprepareHeader( HWAVEIN hwi,LPWAVEHDR pwh, UINT cbwh);
停止錄音
MMRESULT waveInReset( HWAVEIN hwi );
關閉錄音設備
MMRESULT waveInClose( HWAVEIN hwi );
Wave_audio數據格式
typedef struct {
WORD wFormatTag; //數據格式,一般為WAVE_FORMAT_PCM即脈沖編碼
WORD nChannels; //聲道
DWORD nSamplesPerSec; //采樣頻率
DWORD nAvgBytesPerSec; //每秒數據量
WORD nBlockAlign;
WORD wBitsPerSample;//樣本大小
WORD cbSize;
} WAVEFORMATEX;
waveform-audio 緩存格式 
typedef struct {
LPSTR lpData; //內存指針
DWORD dwBufferLength;//長度
DWORD dwBytesRecorded; //已錄音的字節長度
DWORD dwUser;
DWORD dwFlags;
DWORD dwLoops; //循環次數
struct wavehdr_tag * lpNext;
DWORD reserved;
} WAVEHDR;
相關消息 
MM_WIM_OPEN:打開設備時消息,在此期間我們可以進行一些初始化工作
MM_WIM_DATA:當緩存已滿或者停止錄音時的消息,處理這個消息可以對緩存進行重新分配,實現不限長度錄音
MM_WIM_CLOSE:關閉錄音設備時的消息。
相對于錄音來說,回放就簡單的多了,用到的函數主要有以下幾個:
打開回放設備 
MMRESULT waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID, LPWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwCallbackInstance, DWORD fdwOpen );
為回放設備準備內存塊 
MMRESULT waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh );

寫數據(放音) 
MMRESULT waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh );
相應的也有三個消息,用法跟錄音的類似:

三、程序設計

一個錄音程序的簡單流程: 打開錄音設備waveInOpen===>準備wave數據頭waveInPrepareHeader===>
準備數據塊waveInAddBuffer===>開始錄音waveInStart===>停止錄音(waveInReset) ===>
關閉錄音設備(waveInClose)
當開始錄音后當buffer已滿時,將收到MM_WIM_DATA消息,處理該消息可以保存已錄好數據。

回放程序比這個要簡單的多: 打開回放設備waveOutOpen===>準備wave數據頭waveOutPrepareHeader===>寫wave數據waveOutWrite===>
停止放音(waveOutRest) ===>關閉回放設備(waveOutClose)
如何處理MM消息: MSDN告訴我們主要有 CALLBACK_FUNCTION、CALL_BACKTHREAD、CALLBACK_WINDOW 三種方式,常用的是
Thread,window方式。
線程模式
waveInOpen(&hWaveIn,WAVE_MAPPER,&waveform,m_ThreadID,NULL,CALLBACK_THREAD),我們可以繼承MFC的CwinThread類,只要相應的處理線程消息即可。
MFC線程消息的宏為:

ON_THREAD_MESSAGE,
可以這樣添加消息映射: ON_THREAD_MESSAGE(MM_WIM_CLOSE, OnMM_WIM_CLOSE)
窗口模式
類似于線程模式,參見源程序即可

posted on 2006-06-15 06:57 Jerry Cat 閱讀(1197) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理



<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(7)

隨筆檔案

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美国产日韩中文字幕| 小黄鸭视频精品导航| 久久影院亚洲| 亚洲国产高清视频| 亚洲激情一区| 欧美日韩综合| 欧美在线观看视频| 欧美一区激情| 亚洲日本理论电影| 一区二区三区日韩欧美精品| 国产精品美女主播| 久久亚洲不卡| 欧美日韩成人精品| 欧美在线影院| 免费欧美日韩| 亚洲男人第一网站| 久久久精品性| 中文av字幕一区| 欧美一级精品大片| 国产精品99久久久久久宅男| 国产丝袜一区二区| 亚洲国产精品一区二区第一页| 欧美日韩一区二区欧美激情| 欧美在线一二三区| 欧美精品v日韩精品v国产精品| 亚洲永久字幕| 免费观看日韩| 久久精品一区二区国产| 欧美激情国产高清| 久久久国产精品一区二区中文| 久久综合999| 欧美影院久久久| 欧美经典一区二区| 久久网站热最新地址| 欧美色精品天天在线观看视频| 久久久久国产精品一区二区| 欧美三级电影一区| 欧美激情亚洲视频| 国内视频精品| 亚洲免费一在线| 夜夜爽99久久国产综合精品女不卡 | 欧美激情女人20p| 久久久国产成人精品| 欧美视频在线观看视频极品| 欧美激情久久久| 尤物99国产成人精品视频| 亚洲欧美电影在线观看| 一区二区三区久久久| 免费在线国产精品| 男男成人高潮片免费网站| 国产欧美视频一区二区| 夜夜夜久久久| 日韩亚洲欧美一区| 老司机精品久久| 麻豆国产精品777777在线| 国产亚洲视频在线| 亚洲免费网址| 欧美一区二区免费| 国产精品网站视频| 亚洲一区二区三区777| 亚洲一区二区3| 欧美色一级片| 亚洲最新视频在线| 亚洲字幕一区二区| 国产精品国产三级国产普通话三级| 亚洲欧洲一区二区在线观看| 最新亚洲视频| 欧美电影免费观看高清完整版| 欧美成人国产va精品日本一级| 激情成人av在线| 久久综合久久88| 亚洲国产精品一区二区www在线| 亚洲国产精品久久久久久女王 | 欧美成人免费全部观看天天性色| 国产中文一区| 久久亚洲精选| 亚洲激情网址| 亚洲系列中文字幕| 国产欧美日本| 久久久999精品| 亚洲大胆人体视频| 一级成人国产| 国产精品亚洲片夜色在线| 小辣椒精品导航| 国产精品久久久久aaaa九色| 亚洲视频国产视频| 久久久久久亚洲精品杨幂换脸| 在线看成人片| 欧美日韩国产欧美日美国产精品| 在线中文字幕一区| 久久久久国产精品www| 亚洲国产综合在线| 欧美日韩性生活视频| 午夜老司机精品| 亚洲国产精品毛片| 欧美伊人精品成人久久综合97 | 欧美大片免费久久精品三p| 亚洲精品久久| 久久精品最新地址| 日韩午夜电影av| 国产亚洲欧美日韩在线一区| 欧美成年人在线观看| 亚洲欧美日韩国产中文| 亚洲国产高清高潮精品美女| 性欧美大战久久久久久久久| 一区在线播放| 国产精品免费看片| 欧美成人日韩| 久久精品国产96久久久香蕉| 亚洲精品综合精品自拍| 久久夜色精品| 午夜精品福利电影| 99这里只有久久精品视频| 国产亚洲精品久久久久动| 欧美日韩少妇| 欧美成人一区二区三区| 香蕉久久一区二区不卡无毒影院 | 久久九九全国免费精品观看| 一本久久综合| 在线视频观看日韩| 国产日韩欧美| 国产精品xxxxx| 欧美激情第1页| 美腿丝袜亚洲色图| 久久久青草婷婷精品综合日韩| 亚洲一级高清| 在线亚洲激情| 99精品国产在热久久| 欧美国产一区二区三区激情无套| 久久精品国产亚洲一区二区三区| 一区二区免费看| 亚洲美女诱惑| 亚洲精品一二| 亚洲毛片在线| 亚洲精品国产精品久久清纯直播 | 亚洲与欧洲av电影| 亚洲美女中出| 99精品视频免费观看| 亚洲三级观看| 99riav1国产精品视频| 亚洲精品国产视频| 亚洲精品国产精品国产自| 最新国产乱人伦偷精品免费网站| 激情综合五月天| 在线免费高清一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 国产亚洲福利社区一区| 国产一区二区三区奇米久涩 | 有坂深雪在线一区| 一区在线观看视频| 亚洲国产cao| 亚洲人精品午夜在线观看| 久久福利电影| 久久精品一区蜜桃臀影院| 久久嫩草精品久久久精品| 久久综合网hezyo| 欧美精品三级| 国产精品国产亚洲精品看不卡15| 国产精品入口福利| 国产一区二区久久| 91久久精品国产91性色| 一区二区三区欧美日韩| 欧美一级二级三级蜜桃| 久久综合一区二区| 亚洲人成在线播放| 亚洲一区二区三区精品在线观看 | 在线天堂一区av电影| 午夜久久资源| 欧美成人四级电影| 国产精品日韩电影| 亚洲国产高潮在线观看| 夜夜狂射影院欧美极品| 性亚洲最疯狂xxxx高清| 欧美va亚洲va香蕉在线| 日韩午夜电影| 欧美在线视频观看| 欧美精品在线观看一区二区| 国产欧美欧美| 日韩小视频在线观看专区| 亚洲欧美在线播放| 欧美承认网站| 亚洲综合视频1区| 欧美国产日本| 国产主播精品| 在线亚洲精品福利网址导航| 久久久蜜臀国产一区二区| 亚洲精品国产精品乱码不99按摩| 亚洲欧美中文日韩v在线观看| 久久综合激情| 国产欧美日本| 国产精品99久久久久久久vr| 久久亚洲一区二区三区四区| 一区二区三区欧美视频| 蜜桃久久av一区| 国产日韩欧美亚洲| 亚洲色图制服丝袜| 亚洲福利国产精品| 久久激情久久| 国产拍揄自揄精品视频麻豆| 在线亚洲观看|