2012-04-29 64 views
6

我在C#應用程序中使用NAudio庫。試圖尋找一個音頻mp3文件到我想要的位置,我發現我沒有弄清楚如何做到這一點。NAudio - 尋找和導航從指定的位置玩

//Play the file starting from 16th second 
waveStream.Seek(16, SeekOrigin.Begin); 

而且......它從頭開始幾乎開始,但不是從第16秒開始。我也發現了一個我認爲是正確的解決方案:

waveStream.Seek(waveStream.WaveFormat.AverageBytesPerSecond * 16, SeekOrigin.Begin); 

看起來它更接近真相。我的解決方案是否正確?如果不是,我該怎麼辦?

回答

7

您可以直接在WaveStream上設置Position,它必須轉換爲字節偏移量 - 所以是的,每秒平均字節數乘以秒數將使您到達正確的位置(至少使用常規PCM WAV文件)。 WaveStream也有一個名爲CurrentTime的助手屬性,允許您使用TimeSpan,它爲您執行相同的計算。

6

如果有人仍然有這個問題,無法弄清楚。 然後這裏是一個例子:

myWaveStream.CurrentTime = myWaveStream.CurrentTime.Add(new TimeSpan(0, hours, minutes, seconds, milliseconds)); 

myWaveStream.CurrentTime = myWaveStream.CurrentTime.Subtract(new TimeSpan(0, hours, minutes, seconds, milliseconds)); 
+0

你只是真棒! – 2015-08-24 03:12:00

+0

非常感謝,這真的幫助我了! – 2015-09-10 21:13:20