//录音
/// <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. openresty 前端开发序

    还记得第一次尝试前后端分离的时候,是使用nginx + react 构建的spa应用,后端是java,主要处理业务逻辑逻辑部分,返回json数据,在nginx里面配置好html + js纯静态文件,再 ...

  2. 这个图片切换动画只用CSS3实现

    体验效果:http://hovertree.com/texiao/css3/39/ 这是一个使用纯CSS3实现的图文切换效果,没使用js脚本.点击左右箭头或者索圆点引按钮可以切换内容. 本特效中使用到 ...

  3. Webmin 安装 (centos7 rpm 方式)

    网上有很多此类的教程,大多都很老了.这里记录下自己安装Webmin的过程. # 系统准备 > yum -y install perl perl-Net-SSLeay openssl perl-I ...

  4. Android Support 包知识

    Android Support Library包是一组代码库, 它提供了向后版本的framework API的兼容, 这些代码库实现的效果和只能在指定版本中使用的API一样好. 每个Support L ...

  5. ListView之多种类型Item

    一.概述 一般而言,listview每个item的样式是一样的,但也有很多应用场景下不同位置的item需要不同的样式. 拿微信举例,前者的代表作是消息列表,而后者的典型则是聊天会话界面. 本文重点介绍 ...

  6. android textview 自动换行 整齐排版

    一.问题在哪里? textview显示长文字时会进行自动折行,如果遇到一些特殊情况,自动折行会杯具成这个样子: 上述特殊情况包括: 1)全角/半角符号混排(一般是数字.字母.汉字混排) 2)全角/半角 ...

  7. php 学习路线图

  8. Junit单元测试

    写一个被测试的类 这是类中的一些方法,将一个16进制转化为10进制 reckon()为转化的主要方法,返回结果为10进制数 judge()判断字符是否在0-9,A-F之间,并将字符转化为0-15之中的 ...

  9. 关于bundle install 的一点补充

    在第一次运行bundle install之后,生成了Gemfile.lock文件,里面记录gem的具体版本号,按照官方文档说明,以后运行bundle install就不会再依据Gemfile,而是根据 ...

  10. Linux查看物理CPU个数、核数、逻辑CPU个数

    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| ...