录音格式转换的问题

jackyuke 2004-12-17 11:06:25
我的程序录音部分源代码如下:
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")这里出错,请问怎么回事?怎么解决这个问题?
或者说有什么工具能够进行转换,最好是能在我自己的程序里面就能操作这个工具进行转换的
分不够可以再加
...全文
97 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧