如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();
上面的示例将从5秒开始播放8秒钟的音频。但是,如果我想再次播放,它将无法播放,除非将
Position
的AudioFileReader
属性设置为0,然后重新创建一个新实例。的OffsetSampleProvider
。因此,我想知道我是否丢失了某些东西,或者这是应该使用OffsetSampleProvider
的方式(如果确实如此,我是否必须释放与之相关的任何资源)。 最佳答案
您可以复制OffsetSampleProvider
的代码,并向其中添加Reset
方法。出于性能原因,我也避免使用SkipOver
,而只是在播放之前直接将CurrentTime
的AudioFileReader
设置为5秒。
关于audio - NAudio-是否必须为每次播放创建一个新的OffsetSampleProvider实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36366315/