使用WindowsAPI實(shí)現(xiàn)播放PCM音頻的方法
本文介紹了使用WindowsAPI實(shí)現(xiàn)播放PCM音頻的方法,同前面一篇使用WindowsAPI獲取錄音音頻的方法原理具有相似之處,這里就不再詳細(xì)介紹具體的函數(shù)與結(jié)構(gòu)體的參數(shù),相同的部分加以省略,只介紹主要的功能部分代碼。如下所示:
1. waveOutGetNumDevs
2. waveOutGetDevCaps
3. waveOutOpen
回調(diào)函數(shù):
void CALLBACK PlayCallback(HWAVEOUT hwaveout, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);
4. waveOutPrepareHeader
5. waveOutWrite:執(zhí)行后立即開(kāi)始播放,當(dāng)前緩沖區(qū)播放完成會(huì)調(diào)用回調(diào)函數(shù)
這里需要注意:
為了能夠?qū)崿F(xiàn)連續(xù)播放效果,在第4部需要準(zhǔn)備兩個(gè)或兩個(gè)以上的播放數(shù)據(jù)。
感興趣的朋友可以對(duì)比前面的文章手動(dòng)調(diào)試一下本文所述實(shí)例。
相關(guān)文章
VS中scanf函數(shù)報(bào)錯(cuò)問(wèn)題的幾種解決方法
本文主要介紹了VS中scanf函數(shù)報(bào)錯(cuò)問(wèn)題的幾種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
C語(yǔ)言靜態(tài)鏈表和動(dòng)態(tài)鏈表
靜態(tài)鏈表和動(dòng)態(tài)鏈表是線性表鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的兩種不同的表示方式。靜態(tài)鏈表的初始長(zhǎng)度一般是固定的,在做插入和刪除操作時(shí)不需要移動(dòng)元素,僅需修改指針。動(dòng)態(tài)鏈表是相對(duì)于靜態(tài)鏈表而言的,一般地,在描述線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)時(shí)如果沒(méi)有特別說(shuō)明即默認(rèn)描述的是動(dòng)態(tài)鏈表。2016-05-05
C++開(kāi)源庫(kù)nlohmann/json的介紹和使用詳解
nlohmann/json?是一個(gè)C++實(shí)現(xiàn)的JSON解析器,使用非常方便直觀,這篇文章主要為大家詳細(xì)介紹了nlohmann/json的簡(jiǎn)介和使用,需要的可以參考下2023-12-12
Qt顯示QImage圖像在label上,并保持自適應(yīng)大小問(wèn)題
這篇文章主要介紹了Qt顯示QImage圖像在label上,并保持自適應(yīng)大小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Qt中QMapIterator檢測(cè)是否為空的實(shí)現(xiàn)
本文主要介紹了Qt中QMapIterator檢測(cè)是否為空的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10

