0

几个月前,我将录音添加到我正在开发的 MFC 应用程序中。结果证明这很容易,一两个小时后,代码就可以在我的 PC 和几台客户测试机器上运行(一台运行 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 不支持的格式进行录制?

谢谢你的时间

伊恩

4

2 回答 2

0

需要更多细节才能使其正常工作。请注意""文件名前后的双精度:

mcierr=mciSendString("save mysound ""C:\\filename.wav""",tmpstr,80,NULL);

这也很好:

mcierr=mciSendString(@"save mysound ""C:\filename.wav""",tmpstr,80,NULL);

使用这些双引号,代码现在可以在我的 Windows 7 上运行。

于 2013-01-02T19:30:30.980 回答
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 上运行良好。

伊恩

于 2009-04-17T07:46:33.070 回答