//录音
/// <summary>
/// 初始化录音环境
/// </summary>
/// <returns></returns>
public static bool InitalDevice()
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));//11025
ilong = APIClass.mciSendString("set media bitpersample 8", durLength, durLength.Length, 0);
ilong = APIClass.mciSendString("set media samplespersec 11025", durLength, durLength.Length, 0);
ilong = APIClass.mciSendString("set media channels 2", durLength, durLength.Length, 0);
ilong = APIClass.mciSendString("set media format tag pcm", durLength, durLength.Length, 0);
return true;
} /// <summary>
/// 开始录音
/// </summary>
/// <returns></returns>
public static bool BeginRecord()
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));
ilong = APIClass.mciSendString("close My", durLength, durLength.Length, 0);
try
{
ilong = APIClass.mciSendString("open new type waveaudio alias My", durLength, durLength.Length, 0);
ilong = APIClass.mciSendString("record My", durLength, durLength.Length, 0);
}
catch (Exception ex)
{
ex.Message.ToString();
}
return true;
} /// <summary>
/// 保存录音
/// </summary>
/// <param name="path">保存路径</param>
public static void SaveMusic(string path)
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));
try
{
ilong = APIClass.mciSendString("save My " + path, durLength, durLength.Length, 0);
APIClass.mciSendString("close My", durLength, durLength.Length, 0);
}
catch (Exception ex)
{
ex.Message.ToString();
}
} /// <summary>
/// 停止录音
/// </summary>
public void StopRecord()
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));
try
{
APIClass.mciSendString("stop My", durLength, durLength.Length, 0);
}
catch (Exception ex)
{
ex.Message.ToString();
}
} /// <summary>
/// 暂停录音
/// </summary>
public void PauseRecord()
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));
try
{
APIClass.mciSendString("pause My", durLength, durLength.Length, 0);
}
catch (Exception ex)
{
ex.Message.ToString();
}
} /// <summary>
/// 继续录音
/// </summary>
public void ResumeRecord()
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));
try
{
APIClass.mciSendString("resume My", durLength, durLength.Length, 0);
}
catch (Exception ex)
{
ex.Message.ToString();
}
} public class APIClass
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName(string lpszLongPath, string shortFile, int cchBuffer); [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
}

  

使用winmm.dll 获取麦克风声音数据的更多相关文章

  1. winmm.dll获取和设置声音

    [DllImport("winmm.dll")] private static extern int waveOutGetVolume(IntPtr hwo, out uint d ...

  2. 通过winmm.dll控制声音播放

    介绍如何通过winmm.dll播放声音 首先导入两个函数 /// <summary> /// 向媒体控制接口发送控制命令 /// </summary> /// <para ...

  3. winmm.dll包含函数

    DLL 文件: winmm 或者 winmm.dll DLL 名称: Windows Multimedia API 描述: winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游 ...

  4. [转]directsound抓取麦克风PCM数据封装类

    网上有很多方法从麦克风读取PCM数据,不想一一举例.只是在这里发布一个我自己写的directsound的麦克风PCM数据采集类,通过它,可以很方便的利用directsound技术把麦克风的数据采集到, ...

  5. Windows高速定时器,多媒体定时器winmm.dll库的使用

    项目里面用到的这些看起来名字高大上的定时器测试下来也是非常不准.看了源码发现也是用System.Timers.Timer或者用的是Thread休眠的方式来实现的.100毫秒就不准了.直到一番搜索,发现 ...

  6. FFmpeg获取DirectShow设备数据(摄像头,录屏)

    这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1.       列设备 ffmpeg -list_devic ...

  7. 【转】FFmpeg获取DirectShow设备数据(摄像头,录屏)

    这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1.       列设备 ffmpeg -list_devic ...

  8. 读取TDrawGrid之获取博易数据

    朋友叫我帮忙写个从博易读取数据的工具,可无奈数据所在控件并不是Windows标准控件,也就是说没办法通过发送系统消息来获取 相关数据,于是乎试了一下从内存直接读取,可最后并不能达到预期目的,原因是笔者 ...

  9. windows 自带winmm.dll播放音频问题

    同事用的一个录音小程序在他机器上可以用,换了两个电脑不能用,获取音频长度时总是0,检查代码也没有发现具体问题.最后发现是电脑声卡驱动的问题.更新声卡驱动好了. 附上播放音频的代码: 首先,导入dll文 ...

随机推荐

  1. php实现设计模式之 状态模式

    <?php /*状态模式:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.(行为模式) * * 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做 ...

  2. 【工匠大道】 svn命令自己总结

     本文地址   分享提纲: 1. svn 不常见单有用的命令 2. svn查看切换用户 1. svn自己总结的一些不常见,但有用的命令 1)[导出svn不带版本代码]导出不带svn版本控制的代码到本地 ...

  3. activiti工作流的web流程设计器整合视频教程 SSM和独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  4. 如何数据库表数据导出到excel中

    1.首先须要有一个NPOI 2.接下来上代码 private void button1_Click(object sender, EventArgs e) { //1.通过Ado.net读取数据 st ...

  5. html标签学习

    1. 标题 : <h1> - <h6> 2. 分割线 : <hr> 3. 加粗: <strong> 4. 斜体: <em> <i> ...

  6. SharePoint2016合规性策略中心

    如何开启 1. 打开sp2016的管理中心,找到[应用程序]-[创建网站集],如下图: 创建完毕后,如下图: 2. 开启搜索服务并进行爬网,否则进行网站集配置的,无法搜索到网站集 打开管理中心的[管理 ...

  7. android 自定义控件——(一)圆角按钮

    ----------------------------------矩形或圆角类型(源代码下有属性解释)------------------------------------------------ ...

  8. 第三方开源库和jar包的区别

    jar包和第三方开源库的根本区别在于,开源库的功能比jar包功能更强大,通过引入库项目可以访问java文件以及该开源库项目下的资源文件,例如图片,layout等文件 jar包中只能放class文件 引 ...

  9. iOS网络1——NSURLConnection使用详解

    原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...

  10. freeswitch嵌入python脚本

    操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 python版本:2.7.9 开启python模块 安装python lib库 apt-get install pyt ...