前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【.NET】使用NAudio实现录音功能

【.NET】使用NAudio实现录音功能

作者头像
用户9094469
发布2024-08-13 18:50:15
610
发布2024-08-13 18:50:15
举报
文章被收录于专栏:Dotnet Dancer

前言:本文章使用.NET 6环境,创建一个控制台程序,并通过控制按键R、S、P按键来实现开始录音、停止录音、暂停或继续录音的功能。

以下正文:

1、新建一个项目,例如控制台项目。然后引用NAudio包:

2、直接上代码:

代码语言:javascript
复制
 static void Main(string[] args)
        {
            using (var waveIn = new WaveInEvent())
            {
                using (WaveFileWriter writer = new WaveFileWriter($"{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}.wav", waveIn.WaveFormat))
                {
                    waveIn.DataAvailable += (sender, e) =>
                    {
                        writer.Write(e.Buffer, 0, e.BytesRecorded);
                    };

                    Console.WriteLine("Press 'R' to start recording, 'P' to pause/resume, and 'S' to stop.");

                    bool isRecording = false;
                    while (true)
                    {
                        var key = Console.ReadKey(true).Key; 

                        switch (key)
                        {
                            case ConsoleKey.R:
                                if (!isRecording)
                                {
                                    waveIn.StartRecording();
                                    isRecording = true;
                                    Console.WriteLine("Recording started...");
                                }
                                break;

                            case ConsoleKey.P:
                                if (isRecording)
                                {
                                    waveIn.StopRecording();
                                    isRecording = false;
                                    Console.WriteLine("Recording paused...");
                                }
                                else
                                {
                                    waveIn.StartRecording();
                                    isRecording = true;
                                    Console.WriteLine("Recording resumed...");
                                }
                                break;

                            case ConsoleKey.S:
                                if (isRecording)
                                {
                                    waveIn.StopRecording();
                                }
                                Console.WriteLine("Recording stopped.");
                                return; // Exit the loop and the program
                        }
                    }
                }
            }
        }

3、代码解说:

  • WaveInEvent用于从音频输入设备(如麦克风)捕获音频。
  • WaveFileWriter用于将音频数据写入WAV文件
  • waveIn.DataAvailable += (sender, e) =>:这是一个事件处理器的添加。当waveIn对象有可用的音频数据时,它会触发DataAvailable事件。
  • writer.Write(e.Buffer, 0, e.BytesRecorded): 当有音频数据可用时,这段代码会被执行。它将音频数据从e.Buffer写入到WAV文件中。
  • waveIn.StartRecording();waveIn.StopRecording();这两个方法分别用于开始和停止录音。

4、运行效果:

启动:

按R开始录音,按P暂停和恢复,按S停止:

当前默认存储于bin目录下,看下生成的录音文件:

播放的时候,就可以听见自己的录音内容了~

注意,以上内容只是简单例子,如需更加丰富的功能,可以自己定制。如该文章对您有帮助,也欢迎大佬们一键三连,或者关注本公众号

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Dotnet Dancer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档