在C#开发中,播放WAV格式的音频文件可以通过系统自带的SoundPlayer类实现,也可以借助第三方库NAudio完成,两种方案各有适用的场景,开发者可以根据项目需求选择。

使用SoundPlayer播放WAV文件
SoundPlayer是.NET Framework自带的音频播放类,位于System.Media命名空间下,无需安装额外的依赖包,适合播放简单的WAV音频文件,支持同步播放和异步播放两种模式。
基础使用步骤
首先需要在代码文件中引入对应的命名空间,然后创建SoundPlayer实例,指定音频文件路径即可调用播放方法。
using System;
using System.Media;
namespace AudioPlayDemo
{
class Program
{
static void Main(string[] args)
{
// 创建SoundPlayer实例,指定WAV文件路径
SoundPlayer player = new SoundPlayer();
player.SoundLocation = @"D:test.wav";
// 同步播放,播放完成前会阻塞当前线程
player.PlaySync();
// 异步播放,不会阻塞当前线程,适合后台播放场景
// player.Play();
// 循环播放音频
// player.PlayLooping();
Console.WriteLine("音频播放完成");
}
}
}
注意事项
- SoundPlayer仅支持WAV格式的音频文件,不支持MP3、OGG等其他格式
- 如果音频文件路径不正确或者文件格式不支持,调用播放方法时会抛出异常,建议添加异常处理逻辑
- 异步播放时如果需要停止播放,可以调用
Stop()方法
使用NAudio库播放WAV文件
NAudio是一个开源的.NET音频处理库,功能比SoundPlayer更强大,除了支持WAV格式外,还支持MP3、AAC等多种音频格式,同时支持音量调节、播放进度控制、音频录制等高级功能。
安装NAudio库
首先需要通过NuGet包管理器安装NAudio库,在Visual Studio的包管理器控制台中输入以下命令即可完成安装:
Install-Package NAudio
播放WAV文件实现
NAudio播放WAV文件需要使用WaveFileReader读取音频文件,再通过WaveOutEvent输出音频,整体流程比SoundPlayer稍复杂,但扩展性更强。
using System;
using NAudio.Wave;
namespace NAudioDemo
{
class Program
{
static void Main(string[] args)
{
// 指定WAV文件路径
string audioPath = @"D:test.wav";
try
{
// 创建音频读取器,读取WAV文件
using (WaveFileReader reader = new WaveFileReader(audioPath))
{
// 创建音频输出设备
using (WaveOutEvent outputDevice = new WaveOutEvent())
{
// 将读取的音频流绑定到输出设备
outputDevice.Init(reader);
// 开始播放音频
outputDevice.Play();
// 等待播放完成,避免程序提前退出
while (outputDevice.PlaybackState == PlaybackState.Playing)
{
System.Threading.Thread.Sleep(100);
}
}
}
Console.WriteLine("音频播放完成");
}
catch (Exception ex)
{
Console.WriteLine($"播放失败:{ex.Message}");
}
}
}
}
高级功能示例
NAudio支持音量调节和播放进度控制,以下是调节音量的示例代码:
using System;
using NAudio.Wave;
namespace NAudioDemo
{
class Program
{
static void Main(string[] args)
{
string audioPath = @"D:test.wav";
using (WaveFileReader reader = new WaveFileReader(audioPath))
using (WaveOutEvent outputDevice = new WaveOutEvent())
{
outputDevice.Init(reader);
// 设置音量为50%,取值范围是0到1
outputDevice.Volume = 0.5f;
outputDevice.Play();
while (outputDevice.PlaybackState == PlaybackState.Playing)
{
System.Threading.Thread.Sleep(100);
}
}
}
}
}
两种方案对比
| 对比项 | SoundPlayer | NAudio |
|---|---|---|
| 依赖情况 | 系统自带,无额外依赖 | 需要安装NuGet包 |
| 支持格式 | 仅WAV | WAV、MP3、AAC等多种格式 |
| 功能丰富度 | 仅支持基础播放、循环播放 | 支持音量调节、进度控制、音频录制等 |
| 适用场景 | 简单WAV播放需求 | 复杂音频处理需求 |
总结
如果项目只需要播放WAV格式的音频,且没有其他复杂需求,优先选择SoundPlayer,无需额外依赖,实现简单;如果需要支持更多音频格式,或者需要音量调节、进度控制等功能,建议选择NAudio库,虽然需要安装额外的包,但功能更强大,扩展性更好。开发者可以根据项目的实际需求选择合适的方案。
C#SoundPlayerNAudioWAV播放修改时间:2026-07-05 01:15:28