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

时间:2016-04-01 21:43:58

标签: audio naudio

正如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的{​​{1}}属性}到0,并从中重新创建AudioFileReader的新实例。所以我想知道我是否遗漏了某些内容,或者这是OffsetSampleProvider应该使用的方式(如果有的话,我是否必须释放与之相关的任何资源)。

1 个答案:

答案 0 :(得分:1)

您可以复制OffsetSampleProvider的代码并为其添加Reset方法。我还出于性能原因而避免使用SkipOver,并且在您玩游戏之前直接将CurrentTime的{​​{1}}设置为5秒。