zoukankan      html  css  js  c++  java
  • C# NAudio 录音

    RT,录音并保存成wav格式的文件,本来是想用DirectX,但是找了好多资料都无法正常录音,只能用别的方法了,然后就找到了NAudio

    下载地址 http://naudio.codeplex.com/

    下面上在网上找的例子里面的关键类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace LuYinC.Recorder
    {
        public interface ISpeechRecorder
        {
            void SetFileName(string fileName);
            void StartRec();
            void StopRec();
        }
    }
    using NAudio.Wave;
    using System;
    
    namespace LuYinC.Recorder
    {
        class NAudioRecorder : ISpeechRecorder
        {
            public WaveIn waveSource = null;
            public WaveFileWriter waveFile = null;
            private string fileName = string.Empty;
    
            /// <summary>
            /// 开始录音
            /// </summary>
            public void StartRec()
            {
                waveSource = new WaveIn();
                waveSource.WaveFormat = new WaveFormat(16000, 16, 1); // 16bit,16KHz,Mono的录音格式
    
                waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
                waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
    
                waveFile = new WaveFileWriter(fileName, waveSource.WaveFormat);
    
                waveSource.StartRecording();
            }
    
            /// <summary>
            /// 停止录音
            /// </summary>
            public void StopRec()
            {
                waveSource.StopRecording();
    
                // Close Wave(Not needed under synchronous situation)
                if (waveSource != null)
                {
                    waveSource.Dispose();
                    waveSource = null;
                }
    
                if (waveFile != null)
                {
                    waveFile.Dispose();
                    waveFile = null;
                }
            }
    
            /// <summary>
            /// 录音结束后保存的文件路径
            /// </summary>
            /// <param name="fileName">保存wav文件的路径名</param>
            public void SetFileName(string fileName)
            {
                this.fileName = fileName;
            }
    
            /// <summary>
            /// 开始录音回调函数
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void waveSource_DataAvailable(object sender, WaveInEventArgs e)
            {
                if (waveFile != null)
                {
                    waveFile.Write(e.Buffer, 0, e.BytesRecorded);
                    waveFile.Flush();
                }
            }
    
            /// <summary>
            /// 录音结束回调函数
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
            {
                if (waveSource != null)
                {
                    waveSource.Dispose();
                    waveSource = null;
                }
    
                if (waveFile != null)
                {
                    waveFile.Dispose();
                    waveFile = null;
                }
            }
        }
    }


    调用方法:

    recorder = new NAudioRecorder();
    
    //开始录音
    recorder.SetFileName("record.wav");
    recorder.StartRec();
    
    //结束录音
    recorder.StopRec();

    以下是我下载好的NAudio.dll文件,不知道怎么直接放上来文件包,只能发一个百度网盘的连接了

     链接:https://pan.baidu.com/s/1hundpEs 密码:i1m2

  • 相关阅读:
    用TortoiseSVN忽略文件或文件夹(ignore)(网络摘抄记录)
    GridView解决同一行item的高度不一样,如何同一行统一高度问题?
    解决android studio引用远程仓库下载慢(转)
    Databinding在自定义ViewGroup中如何绑定view
    (转 )【Android那些高逼格的写法】InvocationHandler与代理模式
    (转)秒懂,Java 注解 (Annotation)你可以这样学
    View拖拽 自定义绑定view拖拽的工具类
    bcrypt对密码加密的一些认识(学习笔记)
    Node.js+Koa开发微信公众号个人笔记(三)响应文本
    Node.js+Koa开发微信公众号个人笔记(二)响应事件
  • 原文地址:https://www.cnblogs.com/lingLuoChengMi/p/8335681.html
Copyright © 2011-2022 走看看