2017-01-12 3 views
0

파도 파일의 일부를 연주하고 싶습니다. 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(); 
관련 문제