NAudio - 是否必须为每次播放创建一个新的 OffsetSampleProvider 实例

NAudio - Does a new instance of OffsetSampleProvider have to be created for each playback

here 所述,OffsetSampleProvider 可用于播放音频文件的特定部分。像这样:

AudioFileReader AudioReader = new AudioFileReader("x.wav");
OffsetSampleProvider OffsetProvider = New OffsetSampleProvider(AudioReader);

OffsetProvider.SkipOver = TimeSpan.FromSeconds(5);
OffsetProvider.Take = TimeSpan.FromSeconds(8);

myWaveOut.Init(OffsetProvider);
myWaveOut.Play();

上面的例子会播放一个音频 8 秒,从第 5 秒开始。但是,如果我想再次播放,它不会播放,除非我设置 Position 属性的 AudioFileReader 到 0,并从中重新创建 OffsetSampleProvider 的新实例。所以我想知道我是否遗漏了什么,或者这是 OffsetSampleProvider 应该使用的方式(如果是,我是否必须释放与之相关的任何资源)。

您可以复制 OffsetSampleProvider 的代码并向其添加 Reset 方法。出于性能原因,我也会避免使用 SkipOver,并在播放前直接将 AudioFileReaderCurrentTime 设置为 5 秒。