首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#.net的语音记录(winmm.dll)

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

Stack Overflow用户
提问于 2009-05-08 04:05:35
回答 3查看 18.7K关注 0票数 5

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

我使用winmm.dll (又称媒体控制接口(MCI)),它工作得很好,但在特定的计算机上,比如我在vista上运行它时,它工作得很好,在win server 2008上也工作得很好,但在windows2003和xp上就不行了。只是工作,有没有什么先决条件..它需要在那里,或者我应该做什么,以使它在其他风格的windows上工作。

如果some1推荐使用一些示例代码来录制/保存/播放示例,我不介意使用DirectSound :)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-08 04:24:03

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

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

票数 5
EN

Stack Overflow用户

发布于 2009-05-08 04:45:18

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

我使用的是默认声卡,没有显式设置

使用以下代码

代码语言:javascript
复制
[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);

录制

代码语言:javascript
复制
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);

停止并保存

代码语言:javascript
复制
mciSendString(@"save recsound " + OuputFolderName + FileName + ".wav", "", 0, 0);
mciSendString("close recsound ", "", 0, 0);
票数 6
EN

Stack Overflow用户

发布于 2009-12-11 07:54:17

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

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

还有这里

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/838190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档