[英]How to play part of wav file by Naudio/c#
我想播放波形文件的某個部分,例如20到50秒。 我在C#項目中使用Naudio。 我知道如何從20秒開始:
private NAudio.Wave.AudioFileReader wave = null;
private NAudio.Wave.DirectSoundOut outputSound = null;
...
timeFrom = 20;
wave = new NAudio.Wave.AudioFileReader(file);
wave.Position += (long)((double)wave.WaveFormat.AverageBytesPerSecond * timeFrom);
outputSound = new NAudio.Wave.DirectSoundOut();
outputSound.Init(new NAudio.Wave.WaveChannel32(wave));
outputSound.Play();
但是,如何在50秒后停止呢? 使用計時器對我來說不是一個好的解決方案。
看一下OffsetSampleProvider
。 它具有SkipOver
和Take
屬性,使您可以跳過前20秒,然后再跳過30秒。
謝謝,這很有用。 代碼如下:
using NAudio.Wave;
using NAudio.Wave.SampleProviders;
...
private AudioFileReader wave = null;
private WaveOut outputSound = null;
...
wave = new NAudio.Wave.AudioFileReader(fileName);
OffsetSampleProvider offsetSampleProvider = new OffsetSampleProvider(wave);
offsetSampleProvider.SkipOver = TimeSpan.FromSeconds(timeFrom);
offsetSampleProvider.Take = TimeSpan.FromSeconds(timeTo - timeFrom);
outputSound = new WaveOut();
outputSound.Init(offsetSampleProvider);
outputSound.Play();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.