几个月前,我将录音添加到我正在处理的MFC应用程序中。事实证明这很简单,一两个小时之后,代码就在我的电脑和一些客户测试机器上运行(一个运行XP另一个Vista)。然而,最近他们的一台测试机器升级了,现在录音功能拒绝工作。
开始录制的基本代码是..
mcierr=mciSendString("open new type waveaudio alias mysound",tmpstr,80,NULL);
mcierr=mciSendString("set mysound time format ms bitspersample 8 samplespersec 11025",tmpstr,80,NULL);
mcierr=mciSendString("record mysound",tmpstr,80,NULL);
似乎工作正常。要停止录制,执行以下代码..
mcierr=mciSendString("stop mysound",tmpstr,80,NULL);
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL);
mcierr=mciSendString("close mysound",tmpstr,80,NULL);
发送“save mysound C:\ filename.wav”指令时发生以下错误。返回的错误是..
MCI Error A parameter or value was specified twice. Only specify it once.
但我发现我发送的内容没有任何错误,而且该错误没有意义。该错误是否可能是因为程序试图使用PC不支持的格式进行记录?
感谢您的时间
伊恩
答案 0 :(得分:0)
好的,我设法找到了解决方法。代码中的这一行..
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL);
在运行XP的开发PC上工作正常,但在运行XP的所有测试PC和运行Vista的所有测试PC上都会出错。但是,如果文件名本身放在这样的引号内,则错误就消失了。
mcierr=mciSendString("save mysound "C:\\filename.wav"",tmpstr,80,NULL);
现在代码在所有已经过测试的XP和Vista PC上运行良好。
伊恩
答案 1 :(得分:0)
要使其工作,需要更多详细信息。
请在文件名之前和之后观看双""
:
mcierr=mciSendString("save mysound ""C:\\filename.wav""",tmpstr,80,NULL);
这也很好:
mcierr=mciSendString(@"save mysound ""C:\filename.wav""",tmpstr,80,NULL);
使用这些双引号,代码现在可以在我的Windows 7上运行。