C# recording audio based on audio in Console
1.
Install-package naudio -v 1.9.0
2.
using NAudio.Wave;
3.
public class NAudioHelper
{
public WaveInEvent mWavIn;
public WaveFileWriter mWavWriter; public bool IsStoppedRecording { get; set; } = false;
/// <summary>
/// starting recording
/// </summary>
/// <param name="filePath"></param>
public void StartRecord(string filePath)
{
mWavIn = new WaveInEvent();
mWavIn.DataAvailable += MWavIn_DataAvailable;
mWavWriter = new WaveFileWriter(filePath, mWavIn.WaveFormat);
mWavIn.StartRecording(); ConsoleKeyInfo cki = Console.ReadKey(true);
while (cki.Key == ConsoleKey.Escape)
{
//Environment.Exit(0);
StopRecord();
IsStoppedRecording = true;
if(IsStoppedRecording)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Stopped recording!");
break;
}
}
} /// <summary>
/// stop recording
/// </summary>
public void StopRecord()
{
mWavIn?.StopRecording();
mWavIn?.Dispose();
mWavIn = null;
mWavWriter?.Close();
mWavWriter = null;
} private void MWavIn_DataAvailable(object sender, WaveInEventArgs e)
{
mWavWriter.Write(e.Buffer, , e.BytesRecorded);
int secondsRecorded = (int)mWavWriter.Length / mWavWriter.WaveFormat.AverageBytesPerSecond;
}
} static void Main(string[] args)
{
NAudioDemo();
} static void NAudioDemo()
{
NAudioHelper recordHelper = new NAudioHelper();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Ready!");
Console.WriteLine("Enter Enter Key to start recording!");
ConsoleKeyInfo info = Console.ReadKey(true); bool isStarted = false;
while (info.Key==ConsoleKey.Enter)
{
if (!isStarted)
{
string recordedFileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".mp3";
Console.WriteLine("Start recording...");
Console.WriteLine("Press the Escape(Esc) key to quit: \n");
recordHelper.StartRecord(recordedFileName);
isStarted = true;
}
}
}
C# recording audio based on audio in Console的更多相关文章
- 论文翻译:2021_DeepFilterNet: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on Deep Filtering
论文地址:DeepFilterNet:基于深度滤波的全频带音频低复杂度语音增强框架 论文代码:https://github.com/ Rikorose/DeepFilterNet 引用:Schröte ...
- c# Use NAudio Library to Convert MP3 audio into WAV audio(将Mp3格式转换成Wav格式)
Have you been in need of converting mp3 audios to wav audios? If so, the skill in this article prov ...
- audio 基本功能实现(audio停止播放,audio如何静音,audio音量控制等)
audio最简单原始的播放.暂停.停止.静音.音量大小控制的功能,注意某些浏览器会有权限无法自动播放噢(video也会如此) <!doctype html> <html> &l ...
- audio标签以及audio对象
一.audio标签 简单语法 <audio src="音频链接"></audio> 属性 属性 值 描述 autoplay 如果出现该属性,则音频在就绪后马 ...
- github上所有大于800 star OC框架
https://github.com/XCGit/awesome-objc-frameworks#awesome-objc-frameworks awesome-objc-frameworks ID ...
- Web RTC + audio API 实现录音,并压缩
<button onclick="record()">开始录音</button> <button onclick="stopRecord() ...
- 《HTML5》 Audio/Video全解
一.标签解读 <audio> 标签属性 <audio id="media" src="http://www.abc.com/test.mp3" ...
- 微信的audio无法自动播放的问题
一.问题 最近做了一个html5的项目,里面涉及到音乐播放,项目要求音乐进入页面就自动播放,于是我就想到了html5的audio标签,将mp3引入进去. 1.在audio标签里引入了autoplay属 ...
- HTML5 audio与video标签实现视频播放,音频播放
随着互联网的飞速发展以及HTML5的应用,越来越多的项目中用到video,audio当常用标签. <audio> 标签属性 <audio src="song.mp3&quo ...
随机推荐
- C++ Debug 模式下程序崩溃: Expression: is_block_type_valid(header->block_use)
出现这样的错误,可能有很多种原因,而我出现崩溃的原因是由于代码中定义了vector容器, 未对它进行初始化操作导致的, 只要对它的大小进行初始化操作就行了 崩溃代码: vector<Rect& ...
- C# MD5 32大写位加密 UTF-8编码
string UserMd5(string str) { string cl = str; string pwd = ""; MD5 md5 = MD5.Create();//实例 ...
- Mac PyCharm2019激活码
此教程支持最新2019.2版本Pycharm及其他软件 此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: pycharm官网下载地址:http://www.jetbrains.c ...
- distinct关键字对执行计划的影响
一.前言 最近看到一段话,"count(distinct 列名)若列上有索引,且有非空约束或在where子句中使用is not null,则会选择索引快速全扫描.其余情况则选择全表扫描&qu ...
- .NET Core 数据结构与算法 1-1
.NET Core 数据结构与算法 1-1 本节内容为顺序表 简介 线性表是简单.基本.常用的数据结构.线性表是线性结构的抽象 (Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线 ...
- ASP.NET Core部署系列一:发布到IIS上
前言: 当构建一个ASP.NET Core应用程序并且计划将其运行在IIS中时,你会发现Core应用程序和之前版本的ASP.NET程序在IIS中的运行方式是完全不一样的.与ASP.NET时代不同,AS ...
- css网页布局模板
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- vue之虚拟DOM、diff算法
一.真实DOM和其解析流程? 浏览器渲染引擎工作流程都差不多,大致分为5步,创建DOM树——创建StyleRules——创建Render树——布局Layout——绘制Painting 第一步,用HTM ...
- HTTP中的Accept-Encoding、Content-Encoding、Transfer-Encoding、Content-Type
Accept-Encoding和Content-Encoding Accept-Encoding和Content-Encoding是HTTP中用来对采用何种压缩格式传输正文进行协定的一对header. ...
- MD5是个好东西 / MD5 is a nice guy
md5是一种摘要生成算法,通过对消息生成唯一摘要,可校验消息是否被篡改. 众所周知,md5广泛用在http接口通讯的安全控制上,通过在签名原始串后加上商户通信秘钥,进行MD5运算,形成的摘要字符串即为 ...