使用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í)行后立即開始播放,當(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)文章
C語(yǔ)言自研定時(shí)器計(jì)劃任務(wù)語(yǔ)法詳解
市面主流定時(shí)器計(jì)劃任務(wù)語(yǔ)法: cron ,但是使用起來(lái)非常難受,設(shè)計(jì)的比較非人性話語(yǔ)法,我想一般人都沒(méi)幾個(gè)記住的,所以本文將自研定時(shí)器計(jì)劃任務(wù)語(yǔ)法,需要的可以參考一下2022-09-09C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息
這篇文章主要介紹了C++ 中CListCtrl的每個(gè)項(xiàng)都顯示不同的提示信息的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09C++中用substr()函數(shù)消除前后空格的解決方法詳解
本篇文章是對(duì)C++中用substr()函數(shù)消除前后空格的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05使用VScode搭建ROS開發(fā)環(huán)境的教程詳解
這篇文章主要介紹了使用VScode搭建ROS開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08C++11正則表達(dá)式詳解(regex_match、regex_search和regex_replace)
正則表達(dá)式(regular expression)是計(jì)算機(jī)科學(xué)中的一個(gè)概念,又稱規(guī)則表達(dá)式,下面這篇文章主要介紹了C++11正則表達(dá)式(regex_match、regex_search和regex_replace)的相關(guān)資料,需要的朋友可以參考下2022-09-09