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秒钟的音频。但是,如果我想再次播放,它将无法播放,除非将PositionAudioFileReader属性设置为0,然后重新创建一个新实例。的OffsetSampleProvider。因此,我想知道我是否丢失了某些东西,或者这是应该使用OffsetSampleProvider的方式(如果确实如此,我是否必须释放与之相关的任何资源)。

最佳答案

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

关于audio - NAudio-是否必须为每次播放创建一个新的OffsetSampleProvider实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36366315/

10-12 04:01