ste*_*enJ 5 c# wpf mp3 position naudio
我正在努力用C#和WPF制作一个基本的MP3播放器,以及NAudio.我最近添加了一个滑块,可以跟踪歌曲中的当前位置,并允许您将其拖动到不同的位置,Thumb.DragCompleted然后它将歌曲的位置设置为您拖动它的位置.
这一切都很好,所有,除非我让它跳到新位置,它仍然会在更改前的1/5左右播放旧位置.这是最引人注目的,例如当歌手正在唱"aaa"时,你停下来,拖到他唱"ooo"的地步,然后再次播放,你会听到"aa-ooo".这只会让它听起来非常可怕.
所以我认为音频播放只剩下一个小的"缓冲区",它坚持在继续播放之前播放.有没有办法清除这个缓冲区?还是我设置错误的位置?
我正在使用a WaveOut waveOutDevice和a AudioFileReader audioFileReader.调用滑块sldrPlaybackProgress.
我试图以两种不同的方式改变歌曲中的位置:
第一种方法:
audioFileReader.CurrentTime = new TimeSpan(0, (int)(Math.Floor(sldrPlaybackProgress.Value / 60)), (int)(Math.Floor(sldrPlaybackProgress.Value % 60)));
Run Code Online (Sandbox Code Playgroud)
第二种方法:
audioFileReader.Position = (long)(sldrPlaybackProgress.Value * audioFileReader.WaveFormat.AverageBytesPerSecond);
Run Code Online (Sandbox Code Playgroud)
这些单独或甚至两者组合仍导致问题持续存在.
您应该Stop在暂停期间重新定位时调用.这将刷新任何未完成的缓冲区和.在引擎盖下Stop调用waveOutStop和Pause调用waveOutPause,它不会清除任何正在播放的缓冲区.
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |