zoukankan      html  css  js  c++  java
  • WPF使用NAudio录音

    代码:

    using NAudio.Wave;
    using System.Windows;
    
    namespace NAudioDemo
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            RecordController record = new RecordController();
            bool startRecord = false;
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                if (!startRecord)
                {
                    record.StartRecord("D:\rec.wav");
                    startRecord = true;
                }
                else
                {
                    record.StopRecord();
                    startRecord = false;
                }
            }
        }
    
        /// <summary>
        /// 录音功能控制类
        /// </summary>
        public class RecordController
        {
            public WaveIn mWavIn;
            public WaveFileWriter mWavWriter;
    
            /// <summary>
            /// 开始录音
            /// </summary>
            /// <param name="filePath"></param>
            public void StartRecord(string filePath)
            {
                mWavIn = new WaveIn();
                mWavIn.DataAvailable += MWavIn_DataAvailable;
                mWavIn.RecordingStopped += MWavIn_RecordingStopped;
                mWavWriter = new WaveFileWriter(filePath, mWavIn.WaveFormat);
                mWavIn.StartRecording();
            }
    
            /// <summary>
            /// 停止录音
            /// </summary>
            public void StopRecord()
            {
                mWavIn?.StopRecording();
                mWavIn?.Dispose();
                mWavIn = null;
                mWavWriter?.Close();
                mWavWriter = null;
            }
    
            private void MWavIn_RecordingStopped(object sender, StoppedEventArgs e)
            {
                mWavIn?.Dispose();
                mWavIn = null;
                mWavWriter?.Close();
                mWavWriter = null;
            }
    
            private void MWavIn_DataAvailable(object sender, WaveInEventArgs e)
            {
                mWavWriter.Write(e.Buffer, 0, e.BytesRecorded);
                int secondsRecorded = (int)mWavWriter.Length / mWavWriter.WaveFormat.AverageBytesPerSecond;
            }
        }
    }
  • 相关阅读:
    安装centos后无法引导启动windows7的解决方法
    Ubuntu14.04 搜索不到WIFI或连接不上的解决方法。
    ubuntu磁盘分区问题
    Cenos7下nginx+mysql+php环境的搭建
    PHP发送邮件
    php使用数据库的并发问题(乐观锁与悲观锁)
    总结一些php的面试题
    遇到高并发一些处理方法
    PHP中9大缓存技术总结
    php并发加锁示例
  • 原文地址:https://www.cnblogs.com/wzwyc/p/7380265.html
Copyright © 2011-2022 走看看