1.环境准备,引入NAudio dll:
2.播放及录制音频
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using NAudio.Wave;
namespace NAudio
{
class Program
{
static void Main(string[] args)
{
WaveInEvent();
Playwav();
stop();
}
public static void Playwav()
{
// 音频文件路径
// 创建一个 WaveOutEvent 对象
using (var player = new WaveOutEvent())
{
// 打开音频文件
using (var audioFile = new AudioFileReader(Environment.CurrentDirectory+ "\\2.4Gceshitongguo.wav"))
{
// 将 AudioFileReader 连接到 WaveOutEvent
player.Init(audioFile);
// 开始播放
player.Play();
//Console.WriteLine("Press any key to stop...");
//Console.ReadKey();
Thread.Sleep(3000);
// 停止播放
player.Stop();
}
}
}
static WaveFileWriter waveWriter = null;
static WaveInEvent waveIn = null;
static string outputFilePath = Environment.CurrentDirectory + "\\output.wav"; // 录音文件保存路径
public static void WaveInEvent()
{
// 创建录音器
waveIn = new WaveInEvent();
// 设置录音器的参数
waveIn.WaveFormat = new WaveFormat(48000, 2); // 44.1 kHz, mono
waveIn.DataAvailable += WaveIn_DataAvailable;
// 创建录音文件写入器
waveWriter = new WaveFileWriter(outputFilePath, waveIn.WaveFormat);
// 开始录音
waveIn.StartRecording();
Console.WriteLine("正在录制麦克风输入...");
}
// 处理录音数据的回调函数
private static void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
// 在此处理录音数据,例如写入到文件
waveWriter.Write(e.Buffer, 0, e.BytesRecorded);
}
public static void stop()
{
// 停止录音
waveIn.StopRecording();
// 关闭录音器和写入器
waveIn.Dispose();
waveWriter.Close();
Console.WriteLine($"录音已保存为 {outputFilePath}");
Console.Read();
}
}
}
注意事项:
麦克风设置
需要将麦克风录制格式与程式相匹配