当前位置: 首页 > news >正文

使用NAudio录制wav音频

NAudio

NAudio官网

环境

Unity2019.4.34f1c1
Window10
NAudio 1.10 .Net 3.5

录制音频

WaveInEvent类可录制音频

  1. StartRecording方法 启用录制
  2. StopRecording方法 停止录制
  3. DataAvailable 录制中回调
  4. RecordingStopped 录制结束回调

WaveFileWriter类可存储音频

Write方法可存储音频

检测麦克风设备数量

WaveIn.DeviceCount 返回音频捕获设备数量

注意

台式电脑,可能需要插入耳机才可以启用麦克风

示例

  1. 检测到麦克风,显示开始录制按钮
  2. 点击开始录制按钮,显示停止录制按钮
  3. 点击停止录制按钮,回到步骤1
using NAudio.Wave;
using System;
using System.IO;
using UnityEngine;public class RecordNAudio : MonoBehaviour
{bool recording;string outputFolder;string outputFilePath{get{return Path.Combine(outputFolder, DateTime.Now.ToString("yyyyMMddHHmmss") + ".wav");}}WaveInEvent waveIn;WaveFileWriter writer;private void Awake(){recording = false;outputFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "NAudio");if (!Directory.Exists(outputFolder))Directory.CreateDirectory(outputFolder);waveIn = new WaveInEvent();waveIn.DataAvailable += Recording;waveIn.RecordingStopped += RecordingStopped;writer = null;}private void OnGUI(){if (recording == false){if (WaveIn.DeviceCount > 0){if (GUILayout.Button("开始录制")){writer = new WaveFileWriter(outputFilePath, waveIn.WaveFormat);waveIn.StartRecording();recording = true;}}elseGUILayout.Label("无法启用麦克风,请在主机上插入耳机,尝试启用麦克风");            }else{if (GUILayout.Button("停止录制")){waveIn.StopRecording();recording = false;}}}private void Recording(object sender, WaveInEventArgs e){if (writer != null)writer.Write(e.Buffer, 0, e.BytesRecorded);}private void RecordingStopped(object sender, StoppedEventArgs e){if (writer != null)writer.Dispose();writer = null;waveIn.Dispose();}
}
http://www.lryc.cn/news/132591.html

相关文章:

  • 数据结构之动态内存管理机制
  • 【汇编语言】栈及栈操作的实现
  • 【JavaEE】面向切面编程AOP是什么-Spring AOP框架的基本使用
  • SpringBoot+微信小程序奶茶在线点单小程序系统 附带详细运行指导视频
  • 【支付宝小程序】开发基础--文件结构教程
  • LLM 生成式配置的推理参数温度 top k tokens等 Generative configuration inference parameters
  • npm的镜像源和代理的查看和修改
  • IP库新增经过实践的Verilog 库
  • SLAM-VIO视觉惯性里程计
  • 分布式 RPC 框架入门
  • Spring boot与Spring cloud 之间的关系
  • 报名开启 | HarmonyOS第一课“营”在暑期系列直播
  • Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!
  • matlab使用教程(17)—广度优先和深度优先搜索
  • CSerialPort教程4.3.x (2) - CSerialPort源码简介
  • 【数据结构OJ题】有效的括号
  • Java性能分析中常用命令和工具
  • JVM性能分析-jstat工具观察gc频率
  • mysql 查询报错 1267 - Illegal mix of collations
  • 【ARM】Day6
  • 深入理解Flink Mailbox线程模型
  • Docker搭建LNMP运行Wordpress平台
  • 10个常见渐变交互效果
  • [线程/C]基础
  • Spring Clould 负载均衡 - Ribbon
  • 活用DNS技术实现相同IP的不同端口映射不同域名
  • AutoHotkey:定时删除目录下指定分钟以前的文件,带UI界面
  • 一文学会sklearn中的交叉验证的方法
  • 【MySQL面试题(66道)】
  • CSSCI、北核期刊投稿指南(2023年更新)