2017-02-03 5 views
0

Ich versuche, eine MP3-Datei zu trimmen. mit diesem Code:NAudio trimmen mp3-Datei

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); 
      } 
     } 
    } 

„offen“ ist die Datei, ich Trimmen und „Speichern“ ist die Lage Ich bin Speichern. Der Ausschnitt funktioniert aber nicht vollständig. Die neue Datei beginnt bei 60 Sekunden, läuft aber weiter und stoppt nicht bei 90 Sekunden. Wenn die Datei zum Beispiel 3 Minuten lang ist, wird sie bei 1 Minute beginnen und bei 3 enden. Es ist wie die While immer wahr. Was mache ich hier falsch?

Vielen Dank im Voraus!

Antwort

0

Ich habe keine Ahnung, was Ihre Mp3FileReader da macht. Aber deine while loop sieht seltsam aus. Ändert sich mp3FileRead.ReadNextFrame() auch mp3FileReader.CurrentTime? Wenn nicht, dann gibt es Ihr Problem. Sie sollten mindestens mp3FileReader.CurrentTime + 1Frame tun. Andernfalls wird Ihr current wird nie geändert und Schleife immer true

+0

Ich denke, es sollte. Ich komme aus der Bibliothek von NAudio. Ich lerne durch Mark Heath Kurs (der Autor von NAudio) und das ist der Code, den er schrieb, aber statt Datei Speicherort für öffnen und speichern, ließ er es entschuldigen. – EldarGoren

+0

@EldarGoren Können Sie auf Dokumentation verlinken? –

+0

Meinst du NAudio Dokumentation? Wenn ja: https://naudio.codeplex.com/documentation – EldarGoren

0

In NAudio 1.8.0 Mp3FileReader.ReadNextFrame ist Fortschritt nicht CurrentTime, obwohl ich checked in a fix für das vor kurzem.

So können Sie entweder den neuesten NAudio-Code erhalten, oder nutzen Sie die SampleCount Eigenschaft auf jedem Mp3Frame, genau zu verfolgen, wie weit Sie selbst sind.

+0

Ich benutze bereits NAudio 1.8.0 Ich bin ziemlich neu, so gibt es eine Möglichkeit, dass ich das Update herunterladen kann? Wenn Sie nicht krank sind, versuchen Sie es mit der Anzahl der Proben. – EldarGoren

+0

Ich habe dem Code Positionsvariable hinzugefügt, wie Sie es im Fix getan haben. 'var position = 0; während (mp3FileReader.CurrentTime EldarGoren