naudio异步播放多音频列表
时间: 2024-09-19 20:10:31 浏览: 42
C# NAudio录音和播放音频文件-实时绘制音频波形图(从音频流数据获取,而非设备获取)
3星 · 编辑精心推荐
NAudio是一个强大的音频处理库,用于.NET平台,它支持Windows Media Foundation (WPF) 和 DirectShow等多种音频回放技术。在使用NAudio进行异步播放多音频列表时,你可以采取以下步骤:
1. 创建`ISoundPlayer`实例:NAudio提供了`WaveOutEvent`类作为异步音频播放的基础,你可以通过`new WaveOutEvent()`创建一个实例。
2. 音频文件管理:准备你要播放的音频文件列表,每首音频可以加载到独立的`WaveFileReader`对象中,这是播放的基本源。
3. 添加事件处理器:设置`WaveOutEvent`的`DataAvailable`事件,当数据准备好播放时,这个事件会被触发。
4. 开始播放:对于每个音频文件,创建一个新的`WaveOutEvent`实例并设置其`BufferMilliseconds`属性以控制缓冲时间。然后将`WaveFileReader`的数据添加到输出缓冲区,并开始播放。
5. 循环播放:如果需要循环播放整个列表,可以在每首歌曲结束后添加队列操作,将当前播放的`WaveFileReader`替换为列表中的下一首。
```csharp
foreach (var audioFilePath in audioList)
{
var reader = new WaveFileReader(audioFilePath);
var player = new WaveOutEvent();
player.Init(reader);
player.PlaybackStopped += (_, _) => {
if (player.Position == reader.Length) // 当达到文件结束时
player.PlaybackStopped -= ...; // 移除停止回调
else // 或者加入下一个文件到队列
player.SendToBack(player.Buffer); // 使用QueueSample方法添加下一首歌
player.SendToBack(reader.ReadBytes(player.Buffer.Length)); // 开始播放新文件
};
player.Play();
}
```
阅读全文