c# NAudio播放wav
时间: 2023-11-12 10:58:09 浏览: 249
可以使用NAudio库来播放wav文件。以下是一个简单的示例代码:
```csharp
using NAudio.Wave;
// ...
// 创建一个WaveFileReader对象,用于读取wav文件
using (var reader = new WaveFileReader("path/to/file.wav"))
{
// 创建一个WaveOutEvent对象,用于播放音频
using (var waveOut = new WaveOutEvent())
{
// 将WaveFileReader对象作为WaveProvider对象传递给WaveOutEvent对象
waveOut.Init(reader);
// 开始播放音频
waveOut.Play();
// 等待音频播放完毕
while (waveOut.PlaybackState == PlaybackState.Playing)
{
System.Threading.Thread.Sleep(100);
}
}
}
```
相关问题
c# WinForm 使用NAudio播放wav
使用NAudio播放WAV文件非常简单,你可以按照以下步骤来实现:
1. 首先,你需要从NAudio的官方网站下载并安装NAudio库,或者使用NuGet包管理器安装NAudio。
2. 在C# WinForm应用程序中,添加一个“打开文件”按钮和一个“播放”按钮,并在按钮的单击事件中编写代码。
3. 在打开文件按钮的单击事件中,打开文件对话框并选择要播放的WAV文件,并将文件名存储在一个字符串变量中。
4. 在播放按钮的单击事件中,创建一个WaveFileReader对象,用于读取WAV文件的数据。然后,创建一个WaveOut对象,用于播放WAV文件的数据。最后,调用WaveOut对象的Play方法,开始播放WAV文件。
以下是示例代码:
```
using NAudio.Wave;
private string fileName;
private void btnOpenFile_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "WAV files (*.wav)|*.wav";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
fileName = openFileDialog.FileName;
}
}
private void btnPlay_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(fileName))
{
WaveFileReader waveFileReader = new WaveFileReader(fileName);
WaveOut waveOut = new WaveOut();
waveOut.Init(waveFileReader);
waveOut.Play();
}
}
```
在上面的代码中,我们首先在btnOpenFile_Click事件中打开文件对话框并选择要播放的WAV文件,并将文件名存储在fileName变量中。然后,在btnPlay_Click事件中,我们创建一个WaveFileReader对象,用于读取WAV文件的数据。然后,我们创建一个WaveOut对象,并调用其Init方法,将WaveFileReader对象传递给它。最后,我们调用WaveOut对象的Play方法,开始播放WAV文件。
请注意,以上代码只是一个简单的示例,你可能需要根据自己的需求进行适当的修改和调整。
c# WinForm 使用NAudio播放wav,并更新音频位置
如果你想要在C# WinForm中使用NAudio播放WAV文件,并更新音频位置,可以按照以下步骤来实现:
1. 首先,你需要从NAudio的官方网站下载并安装NAudio库,或者使用NuGet包管理器安装NAudio。
2. 在C# WinForm应用程序中,添加一个“打开文件”按钮、一个“播放”按钮和一个ProgressBar控件,并在按钮的单击事件中编写代码。
3. 在打开文件按钮的单击事件中,打开文件对话框并选择要播放的WAV文件,并将文件名存储在一个字符串变量中。
4. 在播放按钮的单击事件中,创建一个WaveFileReader对象,用于读取WAV文件的数据。然后,创建一个WaveOut对象,用于播放WAV文件的数据,并注册一个事件处理程序来更新ProgressBar控件的值。最后,调用WaveOut对象的Play方法,开始播放WAV文件。
以下是示例代码:
```
using NAudio.Wave;
private string fileName;
private WaveFileReader waveFileReader;
private WaveOut waveOut;
private void btnOpenFile_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "WAV files (*.wav)|*.wav";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
fileName = openFileDialog.FileName;
}
}
private void btnPlay_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(fileName))
{
waveFileReader = new WaveFileReader(fileName);
waveOut = new WaveOut();
waveOut.PlaybackStopped += WaveOut_PlaybackStopped;
waveOut.Init(waveFileReader);
progressBar.Minimum = 0;
progressBar.Maximum = (int)waveFileReader.Length;
waveOut.Play();
}
}
private void WaveOut_PlaybackStopped(object sender, StoppedEventArgs e)
{
if (e.Exception != null)
{
MessageBox.Show(e.Exception.Message);
}
waveOut.Dispose();
waveOut = null;
waveFileReader.Dispose();
waveFileReader = null;
}
private void timer_Tick(object sender, EventArgs e)
{
if (waveOut != null)
{
progressBar.Value = (int)waveFileReader.Position;
}
}
```
在上面的代码中,我们首先在btnOpenFile_Click事件中打开文件对话框并选择要播放的WAV文件,并将文件名存储在fileName变量中。然后,在btnPlay_Click事件中,我们创建一个WaveFileReader对象,用于读取WAV文件的数据。然后,我们创建一个WaveOut对象,并调用其Init方法,将WaveFileReader对象传递给它。我们还注册了一个事件处理程序来更新ProgressBar控件的值。
然后,我们调用WaveOut对象的Play方法,开始播放WAV文件。在WaveOut_PlaybackStopped事件中,我们释放WaveOut和WaveFileReader对象。
最后,在timer_Tick事件中,我们检查WaveOut对象是否存在,并更新ProgressBar控件的值。
请注意,以上代码只是一个简单的示例,你可能需要根据自己的需求进行适当的修改和调整。
阅读全文