作者DrStein (啤酒肚)
看板C_and_CPP
標題[問題] 請問如何撥放聲音?
時間Mon Dec 27 18:01:49 2010
現在有固定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
→ tropical72:winmm.lib 12/27 18:37
→ DrStein:喔 知道了。 12/27 19:49
→ DrStein:用waveOutOpen /waveOutPrepareHeader/waveOutWrite 12/27 19:50
※ 編輯: DrStein 來自: 59.120.158.204 (12/27 19:52)
※ 編輯: DrStein 來自: 59.120.158.204 (12/29 19:19)