ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

NAudio:5行C代码让MP3出声,.NET音频播放与录制入门

NAudio:5行C代码让MP3出声,.NET音频播放与录制入门 NAudio5行C#代码让MP3出声.NET音频播放与录制入门【免费下载链接】NAudioAudio and MIDI library for .NET项目地址: https://gitcode.com/gh_mirrors/na/NAudioNAudio 是 .NET 平台上的音频与 MIDI 开源库音频播放、音频录制、格式转换和实时效果处理都在里面。它适合要写播放器、录音工具、音频处理器的 C# 开发者如果你只是想要一个现成播放器控件它不是给你用的。读完这篇文章你能得到一段能出声的控制台代码以及一张哪个场景用哪个类的速查表。写音频程序你最常被卡住的三件事压缩格式解码。调 ACM、Media Foundation 的 C API 很繁琐。NAudio 里 AudioFileReader 一个类就能打开 WAV、MP3、AIFF底层编解码器它自己挑Linux 上则用 NAudio.SoundFile 包覆盖 FLAC、Ogg Vorbis、Opus 等格式。低延迟与独占输出。WASAPI 的 COM 接口、事件回调、独占模式的格式协商都很细碎。NAudio 3 的WasapiPlayer/WasapiPlayerBuilder把这些包成一行链式配置ASIO 也有对应的AsioDevice。跨平台。NAudio.Core、NAudio.Midi、NAudio.Sampler、NAudio.SoundFile在 Windows、Linux、macOS 上都能跑Linux 输出用NAudio.Alsa播放、录音、DSP、MIDI 不用换库。3分钟跑通第一个能出声的Demo先装包元包会拉齐 Windows 全栈非 Windows 目标框架下只解析跨平台部分dotnet add package NAudio再写最短的代码。AudioFileReader负责把 MP3 解成 PCMWaveOut负责把 PCM 送到声卡Init把两者接起来using NAudio.Wave; using var reader new AudioFileReader(song.mp3); // 自动识别格式并解码 using var output new WaveOut(); // 取默认输出设备 output.Init(reader); output.Play(); // 开始播放不阻塞 while (output.PlaybackState PlaybackState.Playing) Thread.Sleep(100);跑起来声音就出来了。Play只表示开始所以用PlaybackState轮询等它播完真实应用里应订阅PlaybackStopped事件后面会讲原因。它到底能帮你做哪些事你的场景用什么所在包Windows 应用播放音频WasapiPlayerWASAPI 共享模式自动重采样音质和延迟均衡NAudio.Wasapi录麦克风或捕获系统声音WasapiRecorder支持 loopback 抓系统音频NAudio.Wasapi把 MP3/WAV 转成别的格式MediaFoundationReaderWaveFileWriter几行代码NAudio.Wasapi加 EQ、混响、压缩、变调NAudio.Effects无杂音 bypass、干/湿混合比例NAudio.Core用 SoundFont 弹 MIDISoundFontSampler软件采样器.sf2直接用NAudio.Sampler读/写标准 MIDI 文件MidiFile事件模型NAudio.Midi专业声卡多声道低延迟AsioDeviceNAudio.Asio完整能力列表在仓库根目录的 README 里按播放、编码、混音、录制、MIDI 分类写得很清楚。从Demo到能上线的项目资源释放太早。表现Stop之后立刻Dispose随机崩溃或最后一截声音被截掉。原因WaveOut在后台线程填缓冲区Stop返回时线程可能还没退出。解法把清理放进PlaybackStopped事件里它保证在线程退出后触发且 WinForms/WPF 中会切回创建设备时的 UI 线程可以直接操作界面。以为Play是阻塞的。表现控制台程序跑完直接退出声音没响。Play只启动播放结束靠PlaybackStopped事件或轮询PlaybackState感知出错时该事件同样会触发e.Exception里有原因。延迟不合适。表现做鼓机、乐器应用时感觉拖沓。WaveOut默认 100ms × 2 块缓冲总延迟约 200ms。可调小BufferMilliseconds或对延迟敏感的场景换 WASAPI 共享模式低延迟且免重采样负担或 ASIO。继续往下走任务型教程都放在 Docs/ 目录播放、录制、编解码、MIDI、Linux/ALSA 都有单独一篇按任务名找就行。想看完整应用怎么组织代码翻 samples/NAudioDemo这是 WinForms 示例集设备枚举、录音、MIDI 输入都有面板演示且跟着主库同步更新。想了解 NAudio 3 为什么拆成这些包看 Docs/Architecture/NAudio3AssemblyLayoutPlan.md从 NAudio 2 升级则先读 Docs/MigratingFromNAudio2.md。从能出声到能上线差的就是上面三个提醒和 Docs 里对应的那篇教程。把 MP3 换成你自己的文件这个库剩下的部分你可以按场景逐个取用。【免费下载链接】NAudioAudio and MIDI library for .NET项目地址: https://gitcode.com/gh_mirrors/na/NAudio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表