2017-02-03 80 views
0

我正在修剪一個mp3文件。使用此代碼 :NAudio修剪mp3文件

private void TrimMp3(string open, string save) 
    { 
     using (var mp3FileReader = new Mp3FileReader(open)) 
     using (var writer = File.Create(save)) 
     { 
      var startPostion = TimeSpan.FromSeconds(60); 
      var endPostion = TimeSpan.FromSeconds(90); 
      mp3FileReader.CurrentTime = startPostion; 
      while (mp3FileReader.CurrentTime < endPostion) 
      { 
       var frame = mp3FileReader.ReadNextFrame(); 
       if (frame == null) break; 
       writer.Write(frame.RawData, 0, frame.RawData.Length); 
      } 
     } 
    } 

「開放」是我的修整和「保存」的文件是我保存的位置。 修整工作,但不完全。新文件的確從60秒開始,但它繼續前進,而不是在90秒停止。例如,如果文件是3分鐘,它將在1分鐘處開始並以3結束。它的情況總是如此。我在這裏做錯了什麼?

在此先感謝!

回答

0

我不知道你的Mp3FileReader在那裏做什麼。但你的while loop看起來很奇怪。 mp3FileRead.ReadNextFrame()也改變了mp3FileReader.CurrentTime?如果沒有,那麼你的問題。 你應該至少做mp3FileReader.CurrentTime + 1Frame。否則,你的CURRENTTIME永遠不會改變,循環將永遠是true

+0

我認爲應該。我來自圖書館NAudio。我正在通過馬克希思課程(NAudio的作者)學習,那是他編寫的代碼,但沒有給文件位置打開和保存,他讓它變得尷尬。 – EldarGoren

+0

@EldarGoren你能鏈接到文檔嗎? –

+0

你的意思是NAudio文件?如果是這樣的話:https://naudio.codeplex.com/documentation – EldarGoren

0

在n音訊1.8.0,Mp3FileReader.ReadNextFrame不進步CurrentTime,雖然我checked in a fix爲最近。

因此,您可以獲取最新的NAudio代碼,也可以利用每個Mp3Frame上的SampleCount屬性來準確跟蹤您自己有多遠。

+0

我已經在使用NAudio 1.8.0 我很新,所以有一種方法可以下載修復程序?如果沒有生病,試着弄個抽樣數。 – EldarGoren

+0

我在代碼中添加了位置變量,就像您在修復中所做的那樣。 'var position = 0; (mp3FileReader.CurrentTime EldarGoren