使用winmm.dll 获取麦克风声音数据

时间:2022-12-09 10:00:45
//录音
/// <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&period;dll获取和设置声音

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

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

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

  3. winmm&period;dll包含函数

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

  4. &lbrack;转&rsqb;directsound抓取麦克风PCM数据封装类

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

  5. Windows高速定时器&comma;多媒体定时器winmm&period;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&period;dll播放音频问题

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

随机推荐

  1. Data Base MongoDB 无法创建抽象类的问题&comma;

     无法创建抽象类BsonClassMap.RegisterClassMap 大家都知道抽象类是无法实例化的,即:不能new. 在以下这些情况会遇到这种问题: 1.基类是抽象类: 2.基类是接口: 由于 ...

  2. php include include&lowbar;once require require&lowbar;once 的区别与联系

    一.require 与 include 的区别: The require() function is identical to include(), except that it handles er ...

  3. ajax jsonp 跨域请求

    $.ajax({ type:"get", url: "http://localhost/test/a.php", dataType: "jsonp&q ...

  4. Elasticsearch JAVA api搞定groupBy聚合

    本文给出如何使用Elasticsearch的Java API做类似SQL的group by聚合.为了简单起见,只给出一级groupby即group by field1(而不涉及到多级,例如group ...

  5. Java基础中的一些概念理解

    同步 和 异步区别 同步和异步通常用来形容一次方法的调用. 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为.而异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用 ...

  6. SVN clean失败解决方法【转】

    原文地址:http://blog.csdn.net/victory08/article/details/42100325/ svn执行clean up后出现提示:svn cleanup failed– ...

  7. 在使用Idea配置jQuery的问题

    今天使用idea中引入jQuery代码时,发生的几个错误,时刻提醒 1.jQuery的驱动包要放置在web目录下 2.引入jQuery的驱动包时,语句格式为<script></scr ...

  8. CentOS 6安装php加速软件Zend Guard&lpar;转&rpar;

    (尚未验证) PHP5.3以上的版本不再支持Zend Optimizer,已经被全新的 Zend Guard Loader 取代,下面是安装Zend Guard具体步骤,以下操作均在终端命令行执行 1 ...

  9. Kubernetes 1&period;5&period;3 部署

    > kubernetes 1.5.3, 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点  |      I P      ||--------|-------------||no ...

  10. 【机器学习笔记】循环神经网络RNN

    1. 从一个栗子开始 - Slot Filling 比如在一个订票系统上,我们的输入 "Arrive Taipei on November 2nd" 这样一个序列,我们设置几个槽位 ...