文件格式:IMA ADPCM的WAV格式,参数如下设置。
pcmWaveFormat.wFormatTag=WAVE_FORMAT_IMA_ADPCM;
pcmWaveFormat.nChannels=1;
pcmWaveFormat.nSamplesPerSec=8000;
pcmWaveFormat.nAvgBytesPerSec=4055;
pcmWaveFormat.nBlockAlign=256;
pcmWaveFormat.wBitsPerSample=4;
pcmWaveFormat.cbSize=0;
当调用waveOutOpen时返回:WAVERR_BADFORMAT-Attempted to open with an unsupported waveform-audio format。
此格式的文件在windows自带的录音机中能正确识别出格式,能播放。
问题:waveOutOpen能播放此格式的文件吗?能的话,要怎么播放?最好给出例子。
如果不能,怎样才能播放此格式的文件?最好给出例子。
谢谢。
pcmWaveFormat.wFormatTag=WAVE_FORMAT_IMA_ADPCM;
pcmWaveFormat.nChannels=1;
pcmWaveFormat.nSamplesPerSec=8000;
pcmWaveFormat.nAvgBytesPerSec=4055;
pcmWaveFormat.nBlockAlign=256;
pcmWaveFormat.wBitsPerSample=4;
pcmWaveFormat.cbSize=0;
当调用waveOutOpen时返回:WAVERR_BADFORMAT-Attempted to open with an unsupported waveform-audio format。
此格式的文件在windows自带的录音机中能正确识别出格式,能播放。
问题:waveOutOpen能播放此格式的文件吗?能的话,要怎么播放?最好给出例子。
如果不能,怎样才能播放此格式的文件?最好给出例子。
谢谢。
pcmWaveFormat.cbSize=0;看MSDN上的,说没有额外信息的话,置0;其它值试过了(32,64,256),还是一样。
刚开始的时候也是按PCM格式放音的,返回结果WAVERR_BADFORMAT。就是不行。
WAVEFORMATEX * pCompFmt = NULL;
pCompFmt = (WAVEFORMATEX*)new BYTE[sizeof(WAVEFORMATEX)];
pSrcFmt = (WAVEFORMATEX*)new BYTE[sizeof(WAVEFORMATEX)];
ZeroMemory(pCompFmt,sizeof(WAVEFORMATEX)); pCompFmt->wFormatTag = static_cast<WORD>(theApp.GetProfileInt("DVR","AudioCodec",WAVE_FORMAT_GSM610));
pCompFmt->nChannels = static_cast<WORD>(nChannel);
pCompFmt->wBitsPerSample = static_cast<WORD>(nBit);
pCompFmt->nSamplesPerSec = static_cast<WORD>(nFreq);
pCompFmt->nBlockAlign = pCompFmt->nChannels * pCompFmt->wBitsPerSample / 8;
pCompFmt->nAvgBytesPerSec = pCompFmt->nSamplesPerSec * pCompFmt->nBlockAlign;
CopyMemory(pSrcFmt,pCompFmt,sizeof(WAVEFORMATEX));
谢谢你的代码。
看了MSDN关于cbSize参数的说明,明白了要是要使用IMA_ADPCM格式的话,要在WAVEFORMATEX结构后面添加格式信息,不知道这个格式信息是怎么样的,在哪里可以得到这方面的信息?
谢谢。
还是放不出来,真的不行的话,要经过解压缩才行了。