使用winmm.dll 获取麦克风声音数据
//录音
/// <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 获取麦克风声音数据的更多相关文章
- winmm.dll获取和设置声音
[DllImport("winmm.dll")] private static extern int waveOutGetVolume(IntPtr hwo, out uint d ...
- 通过winmm.dll控制声音播放
介绍如何通过winmm.dll播放声音 首先导入两个函数 /// <summary> /// 向媒体控制接口发送控制命令 /// </summary> /// <para ...
- winmm.dll包含函数
DLL 文件: winmm 或者 winmm.dll DLL 名称: Windows Multimedia API 描述: winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游 ...
- [转]directsound抓取麦克风PCM数据封装类
网上有很多方法从麦克风读取PCM数据,不想一一举例.只是在这里发布一个我自己写的directsound的麦克风PCM数据采集类,通过它,可以很方便的利用directsound技术把麦克风的数据采集到, ...
- Windows高速定时器,多媒体定时器winmm.dll库的使用
项目里面用到的这些看起来名字高大上的定时器测试下来也是非常不准.看了源码发现也是用System.Timers.Timer或者用的是Thread休眠的方式来实现的.100毫秒就不准了.直到一番搜索,发现 ...
- FFmpeg获取DirectShow设备数据(摄像头,录屏)
这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1. 列设备 ffmpeg -list_devic ...
- 【转】FFmpeg获取DirectShow设备数据(摄像头,录屏)
这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1. 列设备 ffmpeg -list_devic ...
- 读取TDrawGrid之获取博易数据
朋友叫我帮忙写个从博易读取数据的工具,可无奈数据所在控件并不是Windows标准控件,也就是说没办法通过发送系统消息来获取 相关数据,于是乎试了一下从内存直接读取,可最后并不能达到预期目的,原因是笔者 ...
- windows 自带winmm.dll播放音频问题
同事用的一个录音小程序在他机器上可以用,换了两个电脑不能用,获取音频长度时总是0,检查代码也没有发现具体问题.最后发现是电脑声卡驱动的问题.更新声卡驱动好了. 附上播放音频的代码: 首先,导入dll文 ...
随机推荐
- java类的初始化顺序
在java中,当我们new一个对象时,对象中的成员,初始化块以及构造方法的加载是有一定的顺序的,看下面一副图: 一.单类(无基类)下的初始化顺序: public class Parent { stat ...
- CDN模式介绍
body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; } CDN(content delivery networ ...
- 【Google Chrome】 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource问题解决
问题??打开Google Chrome浏览器报错如下: 结论 浏览器出于安全性考虑,默认对跨域访问禁止 解决方法 给浏览器添加启动参数 --allow-file-access-from-files ...
- js获取页面url
设置或获取对象指定的文件名或路径. window.location.pathname例:http://localhost:8086/topic/index?topicId=361alert(windo ...
- AlloyRenderingEngine燃烧的进度条
写在前面 Github: https://github.com/AlloyTeam/AlloyGameEngine HTML 5新增了progress标签,那么再去使用AlloyRenderingEn ...
- SVG图形引用、裁切、蒙版
SVG图形引用.裁切.蒙版,使用三个标签: 1. <use>标签创建图形引用 2. <clipPath>标签裁切图形 3. <mask>标签创建蒙版 ...
- dyld 加载 Mach-O
➠更多技术干货请戳:听云博客 前言 最近看 ObjC的runtime 是怎么实现 +load 钩子函数的实现.进而引申分析了 dyld 处理 Mach-O 的这部分机制. 1.简单分析 Mach-O ...
- Android InputType详解
android:inputType 如果设置android:inputType = "number",则默认弹出的输入键盘为数字键盘,且输入的内容只能为数字. InputType文 ...
- Ext JS - 问答
Ext JS - 问答 在下面你将可以找到关于Ext JS 的最常见问题的答复.如果没有找到您所需的答复,请访问 Ext JS 论坛或者提交一个支持申请. 如果你确信你的问题可以对本页有补充,请让我们 ...
- Oracle 数据库中对记录进行分页处理——学习笔记
学习到 oracle 的视图的时候,了解到对 Oracle 中数据的记录进行分页处理和 Mysql 提供的 limit 来进行分页处理大有不同,limit 是 mysql 中特有的关键字. 那么在 o ...