void CWavePlayer::PlayWave(LPBYTE lpWaveBuffer, DWORD dwSize)
{//将WAVE数据转化为WAVE文件 (lpWaveBuffer:语音字符 dwSize:长度)
//m_waveFmtPrev:WAVEFORMATEX类型,可以自己定义其值,也可以从语音文件中读取
int nSize = 4 + 4 + 8 + 4 + sizeof(PCMWAVEFORMAT) + 4 + 4 + dwSize;
BYTE *pBuff = new BYTE[nSize];
BYTE *p = pBuff;
//1:添加头:RIFF
memcpy(p, "RIFF", 4);
p += 4;
//2:size
*((DWORD *)p) = nSize - 8;
p += 4;
//添加格式类型:WAVEfmt
memcpy(p, "WAVEfmt ", 8);
p += 8;
//大小:Sizeof(PCMWAVEFORMAT)
*((DWORD *)p) = sizeof(PCMWAVEFORMAT);
p += 4;
PCMWAVEFORMAT fmt;
fmt.wf.nAvgBytesPerSec = m_waveFmtPrev.nAvgBytesPerSec;
fmt.wf.nBlockAlign = m_waveFmtPrev.nBlockAlign;
fmt.wf.nChannels = m_waveFmtPrev.nChannels;
fmt.wf.nSamplesPerSec = m_waveFmtPrev.nSamplesPerSec;
fmt.wf.wFormatTag
WAVE数据转成WAVE文件并输出语音
最新推荐文章于 2022-07-13 17:33:01 发布