C# naudio waveStream的seek用法
时间: 2023-07-12 19:17:44 浏览: 162
在 Naudio 中,WaveStream 类是一个抽象类,不能直接实例化。可以使用它的子类,如 WaveFileReader、WaveMemoryStream、WaveChannel32 等。
WaveStream 类提供了 Seek 方法,用于在流中跳转到指定位置。使用 Seek 方法需要注意以下几点:
1. Seek 方法只对支持随机访问的流有效,如文件流、内存流等。
2. Seek 方法的参数是距离流开头的偏移量,单位为字节。
下面是一个使用 WaveFileReader 的示例代码,展示了如何使用 Seek 方法跳转到指定位置:
```csharp
using NAudio.Wave;
using System;
class Program
{
static void Main(string[] args)
{
var waveFile = @"D:\audio.wav";
using (var reader = new WaveFileReader(waveFile))
{
// 获取总时长
var totalTime = reader.TotalTime;
Console.WriteLine("Total time: {0}", totalTime);
// 跳转到指定位置
var position = new TimeSpan(0, 1, 30); // 跳转到 1 分 30 秒处
reader.Seek(position, System.IO.SeekOrigin.Begin);
// 读取数据
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = reader.Read(buffer, 0, buffer.Length)) > 0)
{
// 处理数据
Console.WriteLine("Bytes read: {0}", bytesRead);
}
}
}
}
```
在上面的示例代码中,我们使用 WaveFileReader 打开一个 WAV 文件,并获取了总时长。然后,我们使用 Seek 方法跳转到 1 分 30 秒处,并读取数据进行处理。
阅读全文