看板 C_and_CPP 關於我們 聯絡資訊
現在有固定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)