NAudio 音频播放与录制5 分钟从 0 到 1 实操避坑【免费下载链接】NAudioAudio and MIDI library for .NET项目地址: https://gitcode.com/gh_mirrors/na/NAudio先搞清楚它能解决什么问题给 .NET 应用加音频回放、采集和格式转换手写 WASAPI、ALSA 这些底层接口非常耗时。NAudio 把音频 API 封装成开箱即用的组件适合需要在控制台、WinForms 或 Linux 服务里读写音频文件的开发者。功能全景它到底能干什么音频功能按职责拆成独立的 NuGet 包只引用需要的部分即可四个功能域边界清晰。 多后端音频回放当你需要把声音输出到设备时它把 WASAPI、WaveOut、ASIO、DirectSound 和 Linux ALSA 统一成同一个IWavePlayer接口。WasapiPlayer提供共享/独占模式、低延迟选项与默认设备自动跟随实现见 WasapiPlayer专业声卡多声道低延迟场景走AsioDevice源码在 NAudio.AsioLinux 上用AlsaOut输出源码在 AlsaOut 跨平台音频文件读写当你需要读取或导出 WAV、MP3、FLAC、Ogg、Opus 时它按格式自动选择解码路径并统一转成浮点 PCM。AudioFileReader一行代码打开文件并完成解码源码在 AudioFileReaderNAudio.SoundFile基于 libsndfile跨平台读写 FLAC/Ogg/Opus见 SoundFileReaderWindows 上 WMA、AAC 等容器由 Media Foundation 接管见 MediaFoundationReader✂️ 采样处理与实时效果当你需要在播放链路上改采样率、声道或挂效果时它以ISampleProvider信号链组织处理流程。重采样、声道转换、淡入淡出等 Provider 位于 NAudio.Core/WaveNAudio.Effects提供均衡器、压缩、混响、变调等 30 余种效果见 Effects32 位浮点混音引擎支持多轨叠加与电平监测 MIDI 与软件采样器当你需要播放 MIDI 或软音源时它内置完整的 MIDI 事件模型和多声部采样器。MIDI 文件读写与实时事件处理见 NAudio.Midi软件采样器播放 SoundFont、SFZ 乐器核心是 SamplerEngineWindows 上可托管 VST 3 效果器与乐器见 Vst3Plugin跑起来从 0 到第一个可用结果先装元包一行命令dotnet add package NAudio只想引入核心部分可单独装 NAudio.Core。下面这个控制台示例用 AudioFileReader 打开文件交给WaveOut输出using NAudio.Wave; using var audioFile new AudioFileReader(test.wav); // 自动识别 WAV/MP3 并解码 using var outputDevice new WaveOut(); // 创建输出设备 outputDevice.Init(audioFile); outputDevice.Play(); // 非阻塞启动 while (outputDevice.PlaybackState PlaybackState.Playing) { Thread.Sleep(100); // 轮询等待播完 }跑完能听到完整声音即算通过。想验证真实声卡行为可以运行 NAudioConsoleTest 里的设备级测试。不同场景下怎么选如果你只需要在 Windows 控制台放个文件WaveOutAudioFileReader就够不必上 WASAPI场景推荐用法普通播放器WindowsWaveOut或WasapiPlayer共享模式配置最少低延迟回放/实时应用WasapiPlayerBuilder加WithLowLatency()或独占模式并调小WithLatencyLinux 服务AlsaOut播放 SoundFileReader读文件别依赖 Media Foundation容易踩的坑框架版本不够—— NAudio 3 要求 net9.0老 .NET Framework 项目引用后直接编译失败留在 NAudio 2.x 或升级目标框架。跨平台读不了 MP3——AudioFileReader在 Linux 上打开 MP3 抛 NotSupportedException换NAudio.SoundFile的SoundFileReader。独占模式格式不匹配——WasapiPlayer独占模式必须用设备原生采样率/位深先调GetSupportedExclusiveFormat探测再Init。忘记释放设备—— 不 Dispose 的WaveOut、AudioFileReader会导致下次打开设备失败或声音残留统一用 using 包裹。项目里值得翻一翻的东西演示工程一直跟着主库更新比网上教程可靠NAudioDemo— 桌面功能演示samples/NAudioDemoNAudioWpfDemo— WPF 交互演示samples/NAudioWpfDemoNAudioConsoleTest— 硬件测试台samples/NAudioConsoleTestDocs 教程— 任务式教程Docs继续深入任务式教程按回放、编码、采集分类整理在 Docs 目录可运行的演示与工具集中在 示例工程升级自 NAudio 2 的话先看 迁移指南。回到开头的问题NAudio 让你把精力花在产品功能上而不是音频驱动细节里。【免费下载链接】NAudioAudio and MIDI library for .NET项目地址: https://gitcode.com/gh_mirrors/na/NAudio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考