(收藏)mci 录音和播放
原文http://blog.csdn.net/lvbian/article/details/18226741
最近在做Android与C#录音并互相通信的小东西。但是卡在C#录音这儿了。找了好久,说的都是DirectX,可是我总是安装不上,这才找到了这个简单的录音方法。当然,如果你想要录得好并且处理音频,那还是用用DirectX吧!原文:http://www.cnblogs.com/zrx401558287/archive/2008/11/28/1343160.html
- using System.Runtime.InteropServices;
- [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
- public static extern int mciSendString(
- string lpstrCommand,
- string lpstrReturnString,
- int uReturnLength,
- int hwndCallback
- );
- private void button1_Click(object sender, EventArgs e)
- {
- mciSendString("set wave bitpersample 8", "", 0, 0);
- mciSendString("set wave samplespersec 20000", "", 0, 0);
- mciSendString("set wave channels 2", "", 0, 0);
- mciSendString("set wave format tag pcm", "", 0, 0);
- mciSendString("open new type WAVEAudio alias movie", "", 0, 0);
- mciSendString("record movie", "", 0, 0);
- }
- private void button2_Click(object sender, EventArgs e)
- {
- mciSendString("stop movie", "", 0, 0);
- mciSendString("save movie 1.wav", "", 0, 0);
- mciSendString("close movie", "", 0, 0);
- }
button1是开始录音,button2是结束录音。你当然也可以通过逻辑判断来只使用一个button。
录音文件保存到了该项目下bin/Debug目录下了。文件名是1.wav。所以你可以在这里改成你自己的文件名
- mciSendString("save movie "+yourfilename, "", 0, 0);
很简单吧?
下面是放音。
放音我使用的是WindowsMediaPlayer这个组件:
我将它设为不可见,自己用按键控制它的播放与暂停。
- private void button1_Click(object sender, EventArgs e)
- {
- if(!playing)
- {
- playing = true;
- button1.Text = "停止";
- this.axWindowsMediaPlayer1.URL ="your voice file name";
- axWindowsMediaPlayer1.Ctlcontrols.play();
- }
- else
- {
- axWindowsMediaPlayer1.Ctlcontrols.stop();
- playing=false;
- button1.Text="播放";
- }
- }
也就是通过URL属性设置播放的文件。
那如果它自己播放结束了怎么办呢?
当然就需要事件啦!
- private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
- {
- if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsStopped)
- {
- if (playing)
- {
- playing = false;
- button1.Text = "播放";
- }
- if (playing_my)
- {
- playing_my = false;
- btn_playmy.Text = "播放我的";
- }
- }
- }

这两个强大的工具让我们完成了简单的开发!
(收藏)mci 录音和播放的更多相关文章
- IOS关于录音,播放实现总结
//音频录制(标准过程5,9更新) 准备:导入AVFoundation框架及头文件 1 设置会话类型,允许播放及录音AVAudioSession *audioSession = [AVAudioSes ...
- Android开发教程 录音和播放
首先要了解andriod开发中andriod多媒体框架包含了什么,它包含了获取和编码多种音频格式的支持,因此你几耍轻松把音频合并到你的应用中,若设备支持,使用MediaRecorder APIs便可以 ...
- Android平台下实现录音及播放录音功能的简介
录音及播放的方法如下: package com.example.audiorecord; import java.io.File; import java.io.IOException; import ...
- windows phone 7 通过麦克风录音,并且播放
原文:windows phone 7 通过麦克风录音,并且播放 //模拟XNA的框架(凡是在wp7中应用xna的都必须先模拟此类) public class XNAAsyncDispatcher : ...
- iOS 实时录音和播放
需求:最近公司需要做一个楼宇对讲的功能:门口机(连接WIFI)拨号对室内机(对应的WIFI)的设备进行呼叫,室内机收到呼叫之后将对收到的数据进行UDP广播的转发,手机(连接对应的WIFI)收到视频流之 ...
- Android 实时录音和回放,边录音边播放 (KTV回音效果)
上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解一下如何一边录音一边播放.使用AndioRecord录音和使用AudioTrac ...
- Android 录音和播放
今天工作上需要做一个一边录音一边播放的功能,大致原因是有一个外部设备输入音频到我们机器,然后我们机器需要马上把音频播放出来.所以了解了一些有关录音和播放的知识.接到这个任务的第一反应就是看看Andro ...
- AudioUnit录音和播放同时进行的一些注意点
录音(播放)和暂停 -(void)start { self.soundTotalLength = 0.0f; if (!self.unitHaveStart) { NSError *error = n ...
- [Android] 录音与播放录音实现
http://blog.csdn.net/cxf7394373/article/details/8313980 android开发文档中有一个关于录音的类MediaRecord,一张图介绍了基本的流程 ...
随机推荐
- rman备份控制文件
rman备份控制文件分为两种情况. 1.自动备份需要配置configure controlfile autobackup on配置之后,控制文件和spfile会在每次rman备份之后自动备份contr ...
- java基础(十) 数组类型
1. 数组类简介 在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...
- eclipse maven构建的java web工程项目 在修改了工程项目名时,tomcat启动异常java.lang.IllegalArgumentException: Can't convert argument:null
问题 我修改了前一个项目的名称.重新启动该项目至tomcat,报错:Java.lang.IllegalArgumentException: Can't convert argument: null 因 ...
- Python学习---ModelForm拾遗180325
ModelForm适用于前台验证和后台直接操作数据库的前后台未做分离,可以一次执行验证和保存数据的场景. 注意: 1. ModelForm里面没有删除方法,需要手动删除内容 2. ModelFor ...
- windows实现MySQL主从复制
MySQL的主从复制是通过binlog日志来实现的,主从复制中的“主”指的是MySQL主服务器上的数据库,“从”指的是MySQL从服务器上的数据库,且这种复制是基于数据库级别的,为此从服务器中的数据库 ...
- How To create extension in Hybris(创建Hybris的扩展)
How To create extension in Hybris What is an extension? An extension is an encapsulated piece of the ...
- (1)构造方法和方法重载 (2)this关键字 (3)方法的传参和递归调用
1.构造方法和方法重载如: Person p = new Person(); - 声明Person类型的引用p指向Person类型的对象 p.show(); - 调用名字为show()的成员方法 1. ...
- Java代理全攻略【有瑕疵:字节码生成部分没看到,最后两节没仔细看,累了】
Java代理 1.代理模式 定义:给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象. 其实就是委托.聚合.中间人. 为了保持行为的 ...
- MySql+Memcached架构的问题
Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现. Memcached服务器使用基于Slab的内存管 ...
- 1864. [ZJOI2006]三色二叉树【树形DP】
Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列. Output 输出文件也只有一行,包含两个数,依次表示最多和最少有多少个点能够被染成绿色. Sample ...