c# WinForm 使用NAudio制作一个播放器,能够调节音频进度
时间: 2024-03-20 20:43:32 浏览: 245
C# Windows Form实现的音乐播放器
5星 · 资源好评率100%
好的,你想要我讲解如何使用 C# WinForm 和 NAudio 制作一个音频播放器,并且能够调节音频进度,对吧?
首先,你需要在你的 WinForm 窗口中添加一个 `MediaPlayer` 控件和一个 `TrackBar` 控件。然后在你的代码中引用 NAudio 库。
接下来,你需要使用 NAudio 中的 `WaveOut` 类来播放音频文件。你可以使用 `WaveFileReader` 类来读取音频文件,并将其传递给 `WaveOut` 对象进行播放。同时,你需要创建一个计时器来定期更新音频进度条的位置。
以下是示例代码:
```csharp
using NAudio.Wave;
private WaveOut waveOut;
private WaveFileReader audioFile;
private Timer timer;
private void PlayAudio(string filePath)
{
audioFile = new WaveFileReader(filePath);
waveOut = new WaveOut();
waveOut.Init(audioFile);
waveOut.Play();
// 设置计时器
timer = new Timer();
timer.Interval = 100; // 100ms 更新一次
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
if (audioFile != null && waveOut != null)
{
// 更新进度条位置
trackBar.Value = (int)(audioFile.Position / (double)audioFile.Length * trackBar.Maximum);
}
}
private void trackBar_Scroll(object sender, EventArgs e)
{
// 跳转到指定位置
if (audioFile != null && waveOut != null)
{
audioFile.Position = (long)(audioFile.Length * trackBar.Value / (double)trackBar.Maximum);
}
}
private void StopAudio()
{
if (waveOut != null)
{
waveOut.Stop();
waveOut.Dispose();
waveOut = null;
}
if (audioFile != null)
{
audioFile.Dispose();
audioFile = null;
}
if (timer != null)
{
timer.Stop();
timer.Dispose();
timer = null;
}
}
```
在上面的代码中,`PlayAudio` 方法接受音频文件的路径作为参数,并使用 `WaveFileReader` 类读取文件。然后,它创建一个 `WaveOut` 对象并使用 `Init` 方法初始化它,最后调用 `Play` 方法开始播放音频。
计时器的 `Tick` 事件处理程序定期更新进度条的位置。它使用 `audioFile.Position` 属性获取当前播放位置,并将其转换为百分比形式,以便更新进度条。
`TrackBar` 控件的 `Scroll` 事件处理程序允许用户手动调整音频进度。它使用 `audioFile.Position` 属性设置音频文件的位置。
最后,`StopAudio` 方法停止播放并释放所有资源。
希望这个示例能帮助你创建一个能够调节音频进度的播放器!
阅读全文