C# Naudio 从麦克风输入到声卡输出 录音 放音功能
本文采用简单的方式,如需使用其他功能,请访问Naudio相关功能
1.using NAudio.Wave;从麦克风输入到声卡输出,并操作数据
//创建输出对象
WaveOut waveOut = new WaveOut();
//创建输入对象
WaveIn waveIn = new WaveIn();
//创建缓冲区
BufferedWaveProvider bufferedWaveProvider = new BufferedWaveProvider(new WaveFormat(16000, 16, 1));
public void PlaySound() {//输入音频参数设置 16k/16位/通道1waveIn.WaveFormat = new WaveFormat(16000, 16, 1);//为wavein的回调函数添加事件,用于操作数据waveIn.DataAvailable += new EventHandler<WaveInEventArgs>(waveIn_DataAvailable);//播放waveOut.Init(bufferedWaveProvider);waveOut.Play();
}
/// <summary>
/// 回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{//e.Buffer为用于操作的数组,类型为bytebufferedWaveProvider.AddSamples(e.Buffer,0,e.BytesRecorded);byte[] WaveIn_Data = e.Buffer;
}
2.利用Naudio录音,如对wav文件的头不了解请访问wav头文件格式
//新建文件操作对象,System.Windows.Forms.Application.StartupPath为程序bin目录 wave为文件夹名称 格式为wav
WaveFileWriter waveFileWriter = new WaveFileWriter(System.Windows.Forms.Application.StartupPath + "\\wave\\.wav", new WaveFormat(16000, 16, 1));
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{//e.Buffer为用于操作的数组,类型为bytebufferedWaveProvider.AddSamples(e.Buffer, 0, e.BytesRecorded);byte[] WaveIn_Data = e.Buffer;waveFileWriter.Write(WaveIn_Data, 0, WaveIn_Data.Length);
}
//先写入头文件,如对wav文件的头不了解请访问
public void CreateWav() {byte[] bxt = new byte[44] { 82, 73, 70, 70, 36, 124, 7, 0, 87, 65, 86, 69, 102, 109, 116, 32, 16, 0, 0, 0, 1, 0, 1, 0, 64, 31, 0, 0, 128, 62, 0, 0, 2, 0, 16, 0, 100, 97, 116, 97, 0, 124, 7, 0 };waveFileWriter.Write(bxt, 0, bxt.Length);
}
//停止录音
private void stopMsg_Click(object sender, EventArgs e)
{waveFileWriter.Close();
}
//播放
private void PlayWav_Click(object sender, EventArgs e)
{//文件打开对象OpenFileDialog dialog = new OpenFileDialog();//设置格式dialog.Filter = "Wave File (*.wav)|*.wav;";//默认路径dialog.InitialDirectory = System.Windows.Forms.Application.StartupPath + "\\wave\\";//是否选取文件if (dialog.ShowDialog() == DialogResult.OK){//文件访问对象AudioFileReader waveReader = new AudioFileReader(dialog.FileName);WaveOut waveOutPlay=new WaveOut();waveOutPlay.Init(waveReader);// 设置音量 0~1waveOutPlay.Volume = 1f; waveOutPlay.Play();}
}
if (waveOutPlay.PlaybackState != PlaybackState.Playing) { }
如有什么错误的地方,望各位提出改进意见,让博主能够更快提升自己,谢谢
C# Naudio 从麦克风输入到声卡输出 录音 放音功能相关推荐
- 用步进正弦激励法测量计算机声卡输出输入幅值频响函数
一. 实验目的 (1) 通过对计算机声卡系统的实测加深对频响函数的理解: (2) 对声音振动及测量有直观了解: (3) 对计算机声卡系统的频响特性有直观的认识. 二. 实验内容 (1) 用声卡发出的步 ...
- 如何将电脑输出声音转到麦克风输入
用途:语音通话时播放音频文件给对方 设置:双击右下角喇叭-->选项-->属性->混音器选择"Audio Input"-->取消麦克风的选择,设置立体声混音的 ...
- c++采集声卡输出_舒尔 Shure RMCE-LTG Lightning-MMCX接口耳机线[线型声卡]测评报告 [Soomal]...
舒尔RMCE-LTG Lightning-MMCX接口耳机线,RMCE是Remote+Mic缩写,LTG是Lightning Cable缩写,指支持苹果iOS设备上的Lightning接口.而MMCX ...
- c++采集声卡输出_其实声卡不单单只有音效,更多功能看这篇就对了
其实声卡不仅仅是一块能够发声的卡,而是一块功能众多的多功能卡. 播放数字音乐: 这是声卡最基本的功能,这得益于数字音乐的存储方式的改进.从原始的wav到流行的mp3,在到新兴的wma等音频格式,使得数 ...
- 电脑麦克风输入没声音,如何解决
文章目录 一.麦克风输入没声音的原因 二.解决办法 1.打开麦克风隐私权限 2.设置更换输入设备 3.打开麦克风设置 4.更新声卡驱动.重启电脑 5.设备损坏,更换设备 一.麦克风输入没声音的原因 麦 ...
- 对声卡输出进行录音的设置.
一般正常的录音都是对Line in进行录音,但有些需要对line out进行录音,因为有些音源是没有line in的. 如即时聊天时录取对方的语音.但这些声音都要经过声卡播放,所以它们的音源就是声卡输 ...
- c++采集声卡输出_耳上明珠 | 魅族双 C 耳机 — EP2C
魅族双 C 耳机 魅族 16s 取消了 3.5mm 耳机接口,使用 USB 输出数字音频信号,支持 Type-C 数字耳机或数字转接器.除了无线蓝牙耳机和一线难求的魅族 HIFI 解码耳放外,与魅族 ...
- 解决nohup: 忽略输入并把输出追加到“nohup.out“或者nohup: 忽略输入重定向错误到标准输出端
解决nohup: 忽略输入并把输出追加到"nohup.out"或者nohup: 忽略输入重定向错误到标准输出端 解决方法: 执行nohup java -jar do_iptable ...
- 输入重定向,输出重定向,管道相关内容及实现方法
近期,通过实现shell了解了输入重定向,输出重定向,管道- 用自己的话总结定义: 输入重定向:把<右边的文件的内容输入到<左边的命令中. 输出重定向:把运行>左边命令得出的结果输入 ...
最新文章
- It appears as though you do not have permission to view information ...
- eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
- Linux下通过rm -f删除大量文件时提示-bash: /bin/rm: Argument list too long的解决方法...
- schema get_ddl
- 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.6 正确度量...
- 三年级学生计算机学情分析,三年级上学期学生学情分析
- jax-rs jax-ws_使用JAX-RS的HTTP缓存
- c语言中用简易暗纹来输入密码,确定夫琅和费单缝衍射明、暗纹位置的不同教学方法的讨论...
- python初中必背语法_一些python语法的合集
- 简历不会做?集设网社区带来精致的个人网站供你参考
- “机海战术”已死!后智能手机时代靠什么才能赢?
- mysql单表约束为_MySQL 表约束
- linux 进程内核栈
- 07 - 雷达发射机的主要质量指标
- Mixly02:米思齐(Mixly)软件安装及初体验
- 郑大计算机课程表,郑州大学研究生课程表.doc
- 计算机添加家庭成员,Win10系统添加家庭成员出错怎么解决?
- matlab中得到透明背景图片的方法,如何在Matlab中得到透明背景的图片?
- 国家标准GB7713-87
- 路由器指定dns解析服务器设置
热门文章
- 运营日记:App推广牢记的点
- vidaa4基于android,详细解析vidaa70v1f-s 和小米4a 70寸哪个好?测评区别大吗?亲身体验内幕曝光...
- 安卓(Android)扫一扫
- 后台运行python程序
- Linus Torvalds - Just for fun The Story of an Accidental Revolutionary
- vite打包在ios11,报错 SyntaxError: Unexpected token ‘{‘. Expected ‘(‘ to start a ‘catch‘ target.
- pandas 的 object 类型
- leanote mysql_leanote 服务器搭建
- 广播、组播、点播的区别
- android怎么升级版本5.0,安卓系统升级到Android 5.0教程【详解】