2017-01-12 12 views
0

waveファイルの一部を再生したいと思います。 20〜50秒。私はC#プロジェクトでNaudioを使用しています。私は20秒で始める方法を知っています:Naudio/cによってwavファイルの一部を再生する方法#

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秒で停止するのですか?タイマーを使うのは良い解決策ではありません。

答えて

1

OffsetSampleProviderをご覧ください。最初の20秒間をスキップしてから次の30秒間を取ることを可能にするSkipOverTakeのプロパティがあります。

0

ありがとうございました。コードは次のとおりです。

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(); 
関連する問題