zoukankan      html  css  js  c++  java
  • c#录音和放音,超简单!不用DirectX

    最近在做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 = "播放我的";
                    }
                }
            }

    这两个强大的工具让我们完成了简单的开发!
  • 相关阅读:
    教你当主管:如何降低你的员工流失率?
    你问我这算什么
    推荐:职场提升的10条捷径
    压力从何而来呢?千万不要2008年结婚
    怎样“管理”你的上司?
    HTTP.sys
    IIS书籍
    IIS目录
    HTTP服务
    在 IIS 7 中使用配置文件
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/3573331.html
Copyright © 2011-2022 走看看