[問題] 請問windows下如何撥放聲音?

看板C_and_CPP (C/C++)作者 (啤酒肚)時間15年前 (2010/12/27 18:01), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
現在有固定wav格式的聲音(無檔頭)在memory中欲撥放。 格式當然是已知。 那請問要用那個windows api呢? 爬了爬文,好像都是用PlaySound這個函數。 自己嘗試的結果,好像較適用於聲音是檔案(硬碟上)。 且這函數是要有檔頭的。 查了msdn,好像用個waveOutOpen 比較恰當? 請問有沒人有這方面經驗的呢? 謝謝 WAVEHDR wHeader; WAVEFORMATEX wFmt; HWAVEOUT deviceHandle; wFmt.wFormatTag = WAVE_FORMAT_PCM; wFmt.nSamplesPerSec = ulSamplesPerSec; wFmt.wBitsPerSample = nBitsPerSample; wFmt.nChannels = nChannels; wFmt.nBlockAlign = nChannels* (nBitsPerSample/EIGHT_BIT); wFmt.nAvgBytesPerSec = nBitsPerSample* wFmt.nBlockAlign ; wFmt.cbSize = 0; hEvent = CreateEvent(NULL , false , false , TEXT("PCM WRITE")); res = waveOutOpen( &deviceHandle, WAVE_MAPPER, &wFmt, 0, 0, CALLBACK_NULL); res = waveOutPrepareHeader(deviceHandle, &wHeader, sizeof(WAVEHDR)); while(1) { /* update buffer */ : : wHeader.lpData = (char*)buf; wHeader.dwBufferLength = nbyte; res = waveOutWrite(deviceHandle, &wHeader, sizeof(WAVEHDR)); }/*while*/ 這樣放出來的聲音斷斷序序啊。。 那請問要怎作才會聯序些呢? 謝謝 自問自答: http://hi.baidu.com/swordbroken/blog/item/8375aa56f9f951030df3e30b.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204

12/27 18:37, , 1F
winmm.lib
12/27 18:37, 1F

12/27 19:49, , 2F
喔 知道了。
12/27 19:49, 2F

12/27 19:50, , 3F
用waveOutOpen /waveOutPrepareHeader/waveOutWrite
12/27 19:50, 3F
※ 編輯: DrStein 來自: 59.120.158.204 (12/27 19:52) ※ 編輯: DrStein 來自: 59.120.158.204 (12/29 19:19)
文章代碼(AID): #1D66GFnm (C_and_CPP)
文章代碼(AID): #1D66GFnm (C_and_CPP)