代码:

  1. using NAudio.Wave;
  2. using System.Windows;
  3.  
  4. namespace NAudioDemo
  5. {
  6. /// <summary>
  7. /// MainWindow.xaml 的交互逻辑
  8. /// </summary>
  9. public partial class MainWindow : Window
  10. {
  11. RecordController record = new RecordController();
  12. bool startRecord = false;
  13.  
  14. public MainWindow()
  15. {
  16. InitializeComponent();
  17. }
  18.  
  19. private void Button_Click(object sender, RoutedEventArgs e)
  20. {
  21. if (!startRecord)
  22. {
  23. record.StartRecord("D:\\rec.wav");
  24. startRecord = true;
  25. }
  26. else
  27. {
  28. record.StopRecord();
  29. startRecord = false;
  30. }
  31. }
  32. }
  33.  
  34. /// <summary>
  35. /// 录音功能控制类
  36. /// </summary>
  37. public class RecordController
  38. {
  39. public WaveIn mWavIn;
  40. public WaveFileWriter mWavWriter;
  41.  
  42. /// <summary>
  43. /// 开始录音
  44. /// </summary>
  45. /// <param name="filePath"></param>
  46. public void StartRecord(string filePath)
  47. {
  48. mWavIn = new WaveIn();
  49. mWavIn.DataAvailable += MWavIn_DataAvailable;
  50. mWavIn.RecordingStopped += MWavIn_RecordingStopped;
  51. mWavWriter = new WaveFileWriter(filePath, mWavIn.WaveFormat);
  52. mWavIn.StartRecording();
  53. }
  54.  
  55. /// <summary>
  56. /// 停止录音
  57. /// </summary>
  58. public void StopRecord()
  59. {
  60. mWavIn?.StopRecording();
  61. mWavIn?.Dispose();
  62. mWavIn = null;
  63. mWavWriter?.Close();
  64. mWavWriter = null;
  65. }
  66.  
  67. private void MWavIn_RecordingStopped(object sender, StoppedEventArgs e)
  68. {
  69. mWavIn?.Dispose();
  70. mWavIn = null;
  71. mWavWriter?.Close();
  72. mWavWriter = null;
  73. }
  74.  
  75. private void MWavIn_DataAvailable(object sender, WaveInEventArgs e)
  76. {
  77. mWavWriter.Write(e.Buffer, , e.BytesRecorded);
  78. int secondsRecorded = (int)mWavWriter.Length / mWavWriter.WaveFormat.AverageBytesPerSecond;
  79. }
  80. }
  81. }

WPF使用NAudio录音的更多相关文章

  1. C# NAudio录音和播放音频文件及实时绘制音频波形图(从音频流数据获取,而非设备获取)

    下午写了一篇关于NAudio的录音.播放和波形图的博客,不太满意,感觉写的太乱,又总结了下 NAudio是个相对成熟.开源的C#音频开发工具,它包含录音.播放录音.格式转换.混音调整等功能.本次介绍主 ...

  2. C# NAudio录音和播放音频文件-实时绘制音频波形图(从音频流数据获取,而非设备获取)

    NAudio的录音和播放录音都有对应的类,我在使用Wav格式进行录音和播放录音时使用的类时WaveIn和WaveOut,这两个类是对功能的回调和一些事件触发. 在WaveIn和WaveOut之外还有对 ...

  3. NAudio的使用说明

    官方网站:http://naudio.codeplex.com/ 源码:https://github.com/naudio/NAudio NuGet安装: Install-Package NAudio ...

  4. C# 录音和变调

    一直想研究下录音 正好有个项目有机会使用一下强大的 NAudio (https://github.com/naudio/NAudio)库 录音 NAudio 录音类库 public class NAu ...

  5. SignalR+NAudio实现语音会话[WPF]

    原文:SignalR+NAudio实现语音会话[WPF] 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lordwish/article/detai ...

  6. C# 录音和播放录音-NAudio

    在使用C#进行录音和播放录音功能上,使用NAudio是个不错的选择. NAudio是个开源,相对功能比较全面的类库,它包含录音.播放录音.格式转换.混音调整等操作,具体可以去Github上看看介绍和源 ...

  7. C# NAudio 录制声音和显示波形图

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)

    前言 本文主要介绍我开发的几款软件产品,大概介绍一下功能.可以让读者了解本人的开发能力,所擅长的方面.有相关开发需求可以联系作者. 本人开发软件多年,从事的行业也多种多样:自然接触了不同的业务,开发了 ...

  9. C#开源录音组件、录像组件、录屏组件及demo源码

    在多媒体系统中,一般都会涉及到录音.录像.录屏问题,采集得到的数据可以用来传输.播放.或存储.所以,对于像课件录制系统.语音视频录制系统.录屏系统等,多媒体数据的采集就是最基础的功能之一. MCapt ...

随机推荐

  1. Java8学习之旅2---基于Lambda的JDBC编程

    Java8的Lambda表达式确实是一个很好的特性.可是在哪些场合下使用.事实上还是须要细致考虑的.我们当然不能为了使用而使用,而是须要找到切实实用的场合.在JDBC编程中,比如查询语句,首先须要进行 ...

  2. 二维高斯滤波器(gauss filter)的实现

    我们以一个二维矩阵表示二元高斯滤波器,显然此二维矩阵的具体形式仅于其形状(shape)有关: def gauss_filter(kernel_shape): 为实现二维高斯滤波器,需要首先定义二元高斯 ...

  3. 小强的HTML5移动开发之路(37)——jqMobi快速入门

    在<小强的HTML5移动开发之路(33)-- jqMobi基础>中我们了解了什么是jqMobi,并从官方下载了jqMobi开发包,下载后解压目录如下: 拷贝上面的/css目录./plugi ...

  4. Oracle数据库零散知识07 -- Materialized view(转)

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...

  5. python request post

    import requests import json class BaiduTranslateSpider: def __init__(self, kw): self.url = "htt ...

  6. 辨异 —— 行星 vs 恒星

    star:恒星,planet:行星: 1. 恒星 恒星是指宇宙中靠核聚变产生的能量而自身能发热发光的星体(比如太阳).过去天文学家以为恒星的位置是永恒不变的,以此为名.但事实上,恒星也会按照一定的轨迹 ...

  7. React Native中的DeviceEventEmitter.addListener与DeviceEventEmitter.emit

    官方文档没有对这两个方法做很好的解释,需要自己找资料研究.看了几篇文章,总结是和订阅发布模式差不多,用来事件监听发送的. React Native学习之DeviceEventEmitter传值   R ...

  8. mongoose ObjectId.toString()

    node中一般我们经常对id进行判断,有的id是string类型,有的是ObjectId(''),这时候就可以使用mongoose的toString方法,将它转换成string

  9. 数学概念 —— 奇异性(Singularity,Vertical tangent)

    0. 基本定义 Singularity (mathematics) 数学上的奇异性一般是指,函数在该点未定义(not defined,比如取值为无穷),或者不可微(fails to be well-b ...

  10. RabbitMQ及其.NET客户端——几个小例子

    一.简单生产者-消费者(使用direct交换器) 1.生产者 var factory = new ConnectionFactory();//实例化一个工厂 factory.HostName = &q ...