audio - 从mciSendString返回的奇怪错误-有人可以帮忙吗?

标签 audio mcisendstring

几个月前,我将音频记录添加到正在使用的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);

发送“保存mysound C:\ filename.wav”指令时,发生以下错误。返回的错误是..
MCI Error A parameter or value was specified twice.  Only specify it once.

但是我看不到我发送的任何错误,并且该错误没有任何意义。错误是否可能是因为程序试图使用PC不支持的格式进行记录?

谢谢你的时间

伊恩

最佳答案

好的,我设法找到了解决方案。代码中的这一行..

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上正常运行。

伊恩

关于audio - 从mciSendString返回的奇怪错误-有人可以帮忙吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642691/

相关文章:

c++ - 使用 mciSendString (MCIERR_CANNOT_LOAD_DRIVER) 播放 mp3 文件

java - 如何在applet外部使用newAudioClip?

android - 如何从 Android 的 AudioTrack 类获取延迟信息?

ios - 同时播放 2 个音频 Objective-C

java - 如何在Java中循环播放*.wav?

java - 无法让 JApplet 播放音乐 mp3 文件

C++ mciSendString 设置音频错误

c - 使用带空格的 mciSendString