NAudio 音频库:3 个场景搞懂 .NET 音频开发 📅 2026/8/21 21:33:52 NAudio 音频库3 个场景搞懂 .NET 音频开发【免费下载链接】NAudioAudio and MIDI library for .NET项目地址: https://gitcode.com/gh_mirrors/na/NAudioNAudio 是 .NET 平台最成熟的开源音频库帮你把播放、录音、转码、加效果这些原本要啃 Windows API 的脏活封装成几行 C# 代码。当你需要在 WinForms 控制台或跨平台应用里读一个 MP3、录一段麦克风、把 WAV 转成 MP3 时它就是那个开箱即用的答案。3 版本起核心包支持 Windows、Linux、macOS最低框架 net9.0核心包还兼容 Native-AOT。NAudio 能帮你做什么能力速览播放音频文件—— MP3、WAV、FLAC 一行代码出声录制麦克风/系统声音—— 事件回调或await foreach拿数据转码与格式转换—— 用系统 Media Foundation 编 MP3/AAC/WMA/FLAC实时加效果—— 均衡器、压缩器、混响、变调无爆音切换MIDI 与软采样器—— 读 MIDI 文件播放 SoundFont/SFZ 音色Linux 出声—— ALSA 后端播放和录音不依赖 Windows从 0 到跑通最小上手路径第 1 步安装 NuGet 包在包管理器控制台执行元包自动带上 Windows 全家桶Install-Package NAudio装完后你会看到项目里多了NAudio依赖可以直接引用NAudio.Wave等命名空间。第 2 步写最小播放代码using var audioFile new AudioFileReader(example.mp3); using var player new WasapiPlayerBuilder().Build(); player.Init(audioFile); player.Play();AudioFileReader自动识别 MP3/WAV/AIFF 等格式WasapiPlayer是 NAudio 3 推荐的低延迟播放设备。跑起来你会听到文件里的声音按 CtrlC 结束进程即可。第 3 步确认结果想确认播完事件监听player.PlaybackStopped想调音量就设player.Volume 0.5f只影响本应用不动系统音量。三个高频实战场景把 WAV 转成 MP3痛点手头一堆 WAV 素材想压成 MP3 分发但懒得装工具链。怎么用MediaFoundationEncoder直接调用系统自带的 Media Foundation 编解码器MediaFoundationEncoder.EncodeToMp3(reader, out.mp3)一行搞定AAC/MP4、WMA、FLAC 同理。Windows 10 自带这些编码器不用额外装东西。注意目标格式编码器缺失时会抛InvalidOperationException生产代码要捕获并提示用户。录麦克风存成 WAV痛点想录一段音做语音备忘却分不清回调里的数据怎么落盘。怎么用WasapiRecorderBuilder().Build()拿到录音器DataAvailable事件直接写入WaveFileWriterStartRecording()开始、StopRecording()结束。数据是ReadOnlySpanbyte仅在回调期间有效要留存必须当场写出。注意默认 100ms 缓冲需要更低的实时延迟可加.WithLowLatency()。实时给播放加均衡器痛点播出去的声音太白想实时挂个 EQ 调节。怎么用NAudio.Effects是跨平台的纯托管效果框架Equalizer、CompressorEffect、ReverbEffect、PitchShiftEffect等 30 余种效果都能包在EffectSampleProvider里再Init给播放器即可。注意效果支持无爆音 bypass 和参数自动化的参数模型切参数不用手动淡入淡出。踩坑与排错速查症状播放有爆音/卡顿→ 默认 200ms 缓冲偏高 → 用WasapiPlayerBuilder().WithLatency(50)降到 50ms专业设备可试.WithLowLatency()。症状独占模式打开失败→ 独占要求设备原生支持该采样率/位深 → 先GetSupportedExclusiveFormat(preferred)探测可用格式失败就退回共享模式共享模式会自动重采样什么格式都能播。症状用户切换默认设备后没声音→ 播放器绑定的是固定端点 → 用WithDefaultDeviceStreamRouting()配合BuildAsync()让 Windows 自动把流迁到新默认设备。症状跨平台项目引用了 WASAPI 包在 Linux 上编译报缺→ 后端包有平台边界 →NAudio.Core/Midi/Effects/Sampler/SoundFile才是跨平台的Linux 出声用NAudio.Alsa。周边工具与学习入口Docs/ —— 按任务组织的教程全集播放、录音、转码、MIDI、Linux ALSA 都有独立指南从 Docs/PlayAudioFileConsoleApp.md 这类单点教程入手最顺samples/NAudioDemo —— WinForms 综合演示播放、录音、MIDI、混音、VST 3 宿主全都能点着玩是了解各模块怎么串起来的捷径samples/NAudioConsoleTest —— 无界面的批量冒烟测试适合验证这台机器上 ASIO/WASAPI 到底能不能用收尾NAudio 把 .NET 音频开发里最繁琐的底层细节都处理掉了你只需要关心要放什么声音、录什么、转成什么格式。去 NuGet 拉一个NAudio包按上面的最小代码跑一遍听到声音就算入门了。【免费下载链接】NAudioAudio and MIDI library for .NET项目地址: https://gitcode.com/gh_mirrors/na/NAudio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考