簡體   English   中英

如何通過Naudio / c#播放wav文件的一部分

[英]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 它具有SkipOverTake屬性,使您可以跳過前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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM