zoukankan      html  css  js  c++  java
  • (收藏)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

    [csharp] view plain copy
     
    1. using System.Runtime.InteropServices;  
    2.   
    3.         [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]  
    4.         public static extern int mciSendString(  
    5.          string lpstrCommand,  
    6.          string lpstrReturnString,  
    7.          int uReturnLength,  
    8.          int hwndCallback  
    9.         );  
    10.         private void button1_Click(object sender, EventArgs e)  
    11.         {  
    12.             mciSendString("set wave bitpersample 8", "", 0, 0);  
    13.   
    14.             mciSendString("set wave samplespersec 20000", "", 0, 0);  
    15.             mciSendString("set wave channels 2", "", 0, 0);  
    16.             mciSendString("set wave format tag pcm", "", 0, 0);  
    17.             mciSendString("open new type WAVEAudio alias movie", "", 0, 0);  
    18.    
    19.             mciSendString("record movie", "", 0, 0);  
    20.         }  
    21.   
    22.         private void button2_Click(object sender, EventArgs e)  
    23.         {  
    24.             mciSendString("stop movie", "", 0, 0);  
    25.             mciSendString("save movie 1.wav", "", 0, 0);  
    26.             mciSendString("close movie", "", 0, 0);  
    27.         }  

    button1是开始录音,button2是结束录音。你当然也可以通过逻辑判断来只使用一个button。

    录音文件保存到了该项目下bin/Debug目录下了。文件名是1.wav。所以你可以在这里改成你自己的文件名

    [csharp] view plain copy
     
    1. mciSendString("save movie "+yourfilename, "", 0, 0);  

    很简单吧?

    下面是放音。

    放音我使用的是WindowsMediaPlayer这个组件:

    我将它设为不可见,自己用按键控制它的播放与暂停。

    [csharp] view plain copy
     
    1. private void button1_Click(object sender, EventArgs e)  
    2.         {  
    3.             if(!playing)  
    4.             {  
    5.         playing = true;  
    6.                 button1.Text = "停止";  
    7.                this.axWindowsMediaPlayer1.URL ="your voice file name";  
    8.                 axWindowsMediaPlayer1.Ctlcontrols.play();  
    9.             }  
    10.             else  
    11.             {  
    12.                 axWindowsMediaPlayer1.Ctlcontrols.stop();  
    13.                 playing=false;  
    14.                 button1.Text="播放";  
    15.             }  
    16.         }  

    也就是通过URL属性设置播放的文件。

    那如果它自己播放结束了怎么办呢?

    当然就需要事件啦!

    [csharp] view plain copy
     
    1. private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)  
    2.         {  
    3.             if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsStopped)  
    4.             {  
    5.                 if (playing)  
    6.                 {  
    7.                     playing = false;  
    8.                     button1.Text = "播放";  
    9.                 }  
    10.                 if (playing_my)  
    11.                 {  
    12.                     playing_my = false;  
    13.                     btn_playmy.Text = "播放我的";  
    14.                 }  
    15.             }  
    16.         }  


    这两个强大的工具让我们完成了简单的开发!

  • 相关阅读:
    BOJ 85 Three Points On A Line
    BOJ 84 Single Number
    BOJ 83 A + B Problem
    【转载】运算符优先级
    匹配体重和为特定值的人,两两成对
    The Brand New Beginning!
    【失败】制作CentOS镜像
    【制作镜像】安装VMwareTool
    部署巡检脚本
    windows server 2008镜像重启后密码变为默认密码的问题的解决方案
  • 原文地址:https://www.cnblogs.com/81/p/6268431.html
Copyright © 2011-2022 走看看