录音格式转换的问题
我的程序录音部分源代码如下:
MCI_OPEN_PARMS mciOpen;
MCI_RECORD_PARMS mciRecord;
MCI_SAVE_PARMS mciSave;
DWORD flags;
long DeviceID;
mciOpen.lpstrDeviceType="waveaudio";
mciOpen.lpstrElementName="";
flags=MCI_OPEN_ELEMENT | MCI_OPEN_TYPE;
if (mciError(mciSendCommand(0,MCI_OPEN,flags,DWORD(&mciOpen)),"OpenWave"))
return false;
DeviceID=mciOpen.wDeviceID;
//设置录音格式 8k/8bit
MCI_WAVE_SET_PARMS mciSet;
flags=MCI_WAVE_SET_BITSPERSAMPLE | MCI_WAVE_SET_SAMPLESPERSEC | MCI_WAVE_SET_AVGBYTESPERSEC
| MCI_WAVE_SET_BLOCKALIGN | MCI_WAVE_SET_CHANNELS | MCI_WAVE_SET_FORMATTAG;
mciSet.nSamplesPerSec=8000;
mciSet.wBitsPerSample=8;
mciSet.wFormatTag=WAVE_FORMAT_PCM;
mciSet.nAvgBytesPerSec=8000;
mciSet.nChannels=1;
mciSet.nBlockAlign=1;
if (mciError(mciSendCommand(DeviceID,MCI_SET,flags,DWORD(&mciSet)),"MCISet"))
return false;
mciRecord.dwTo=iRecordLength;
flags=MCI_TO | MCI_WAIT;
if (mciError(mciSendCommand(DeviceID,MCI_RECORD,flags,DWORD(&mciRecord)),"RecordWave"))
return false;
mciSave.lpfilename=strFileName;
flags=MCI_SAVE_FILE | MCI_WAIT;
if (mciError(mciSendCommand(DeviceID,MCI_SAVE,flags,DWORD(&mciSave)),"SaveToFile"))
return false;
if (mciError(mciSendCommand(DeviceID,MCI_CLOSE,flags,DWORD(NULL)),"Close"))
return false;
问题是:如果我不想用PCM编码,想用mulaw格式编码,msdn上面说应该是mciSet.wFormatTag=WAVE_FORMAT_MULAW;(需要include mmreg.h)
可是我改成这样之后在mciSendCommand(DeviceID,MCI_SET,flags,DWORD(&mciSet)),"MCISet")这里出错,请问怎么回事?怎么解决这个问题?
或者说有什么工具能够进行转换,最好是能在我自己的程序里面就能操作这个工具进行转换的
分不够可以再加