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
,并在播放前直接将 AudioFileReader
的 CurrentTime
设置为 5 秒。
如 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
,并在播放前直接将 AudioFileReader
的 CurrentTime
设置为 5 秒。