使用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 Thread线程异常监控
一.场景描述:单线程程序可以用try...catch捕获程序的异常,而在多线程程序的时候是无法使用try...catch捕获. 示例1:多线程发生异常,无法使用try...catch捕获问题 publ ...
- 【开源】C#跨平台物联网通讯框架ServerSuperIO(SSIO)
[连载]<C#通讯(串口和网络)框架的设计与实现>-1.通讯框架介绍 [连载]<C#通讯(串口和网络)框架的设计与实现>-2.框架的总体设计 目 录 C#跨平台物联 ...
- 分析js中的constructor 和prototype
在javascript的使用过程中,constructor 和prototype这两个概念是相当重要的,深入的理解这两个概念对理解js的一些核心概念非常的重要. 我们在定义函数的时候,函数定义的时候函 ...
- 【IOS开发笔记02】学生管理系统
端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
- oracle rman catalog备份和恢复
1.丢失控制文件 启动数据库至nomount状态:restore controlfile from autobackup/restore controlfile from '+data/ba ...
- Amabri:如何删除或停止指定的服务
原文地址:https://cwiki.apache.org/confluence/display/AMBARI/Using+APIs+to+delete+a+service+or+all+host+c ...
- 腾讯云CentOS系统配置apache和tomcat
本文使用yum软件包管理工具基于CentOS7.2版本配置apache和tom. 云服务器选购完毕后,安装Xshell软件,输入用户名密码即可远程登陆登录(centos用户名默认是root). 1,下 ...
- CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安装
每次搭建新服务器,都要来来回回把这些包再装一下,来来回回搞了不下20遍了吧,原来都是凭经验,配置过程中重复入坑是难免的,故写此文做个备忘.虽然有像xampp这样的集成包,但是在生产环境的Linux发行 ...
- Git权威指南 书摘
##$ git add welcome.txtwarning: LF will be replaced by CRLF in welcome.txt.The file will have its or ...
- [iOS]技巧集锦:UICollectionView在旋转屏幕后Cell中的约束不起作用或自动布局失效
这似乎是iOS的一个BUG(ref: stackoverflow的大神们讲的) 解决方案 在继承自UITableViewCell的子类中的init方法中加入如下设置: self.contentView ...