使用C#.net录制语音记录(winmm.dll)

时间:2009-05-08 04:05:35

标签: c# activex

我的要求是构建一个可以录制语音(通过麦克风)并将磁盘.wav文件保存为桌面和Web应用程序的实用程序。对于特定的用户,所以我选择了activeX技术,因为我没有找到任何其他更好的方法(可能你知道并且可以指导我......将非常受欢迎)

我使用了winmm.dll(又名媒体控制界面(MCI)),它工作得很好,但在特定的计算机上,比如我在vista上运行它,它工作正常,在win server 2008上,但在Windows 2003和xp上它是不工作..只是工作有任何先决条件..需要在那里或我应该做什么使其适用于其他风格的Windows。

我不介意使用DirectSound如果some1建议使用一些示例代码来记录/保存/播放样本:)

3 个答案:

答案 0 :(得分:5)

我会使用DirectShow来捕获音频。由于您在问题中添加了C#标记,因此我建议您使用DirectShow.NET library。确保您还下载samples并查看Capture文件夹中的PlayCap和CapWMV示例。您可能还想在CodeProject结帐Audio Capture article

至于为什么某些操作系统版本正在运行,您是否已在这些系统上确认音频输入与其他程序一起使用?您是否允许用户选择音频设备或仅使用默认音频设备?您收到错误消息还是没有音频?根据此forum,请确保将文件名用双引号括起来。

答案 1 :(得分:5)

实际上没有错误,没有异常,甚至没有输出我正在创建的wav文件,而它在vista和2k8上工作正常但不是之前的版本。

m使用默认声卡未明确设置

使用以下代码

[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);

录制

mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);

停止并保存

mciSendString(@"save recsound " + OuputFolderName + FileName + ".wav", "", 0, 0);
mciSendString("close recsound ", "", 0, 0);

答案 2 :(得分:0)

如果您仍在寻找.net库,请查看:

http://windowsmedianet.sourceforge.net/index.html

在这里

http://www.tapiex.com/ToneDecoder.Net.htm

第一个是LGPL许可,第二个是商业组件套件。