2011-10-28 70 views
5

Czy można przyciąć plik MP3 za pomocą NAudio? Szukam sposobu na wzięcie standardowego pliku mp3 i wzięcie jego części i uczynienie go oddzielnym mp3.Przycinanie plików MP3 przy użyciu NAudio

+0

To pytanie powinno zostać ponownie otwarte. To nie jest duplikat. Odpowiedziałem na oba pytania, a odpowiedzi są różne. –

+0

@RonnieOverby Uzgodnione, ponownie otwarte :) –

Odpowiedz

2

Tak, plik MP3 to sekwencja ramek MP3, więc można po prostu usunąć klatki z początku lub końca, aby przyciąć plik. NAudio może analizować klatki MP3.

Aby uzyskać więcej informacji, patrz this question.

9

Install NAudio z Nuget:

PM> Install-Package NAudio 

Dodaj using NAudio.Wave; i użyć tego kodu:

void Main() 
{ 
    var mp3Path = @"C:\Users\Ronnie\Desktop\podcasts\hanselminutes_0350.mp3"; 
    var outputPath = Path.ChangeExtension(mp3Path,".trimmed.mp3"); 

    TrimMp3(mp3Path, outputPath, TimeSpan.FromMinutes(2), TimeSpan.FromMinutes(2.5)); 
} 

void TrimMp3(string inputPath, string outputPath, TimeSpan? begin, TimeSpan? end) 
{ 
    if (begin.HasValue && end.HasValue && begin > end) 
     throw new ArgumentOutOfRangeException("end", "end should be greater than begin"); 

    using (var reader = new Mp3FileReader(inputPath)) 
    using (var writer = File.Create(outputPath)) 
    {   
     Mp3Frame frame; 
     while ((frame = reader.ReadNextFrame()) != null) 
     if (reader.CurrentTime >= begin || !begin.HasValue) 
     { 
      if (reader.CurrentTime <= end || !end.HasValue) 
       writer.Write(frame.RawData,0,frame.RawData.Length);   
      else break; 
     } 
    } 
} 

Happy Trails.

+1

Korzystając z tej metody, zostawiam plik mp3, którego długość jest błędnie wykryta u niektórych graczy. Wygląda na to, że niektórzy gracze wykrywają starą (wstępnie przyciętą) długość. Czy istnieje sposób, aby to poprawić? – Jarrod

+0

To działa, testowane z NAudio 1.7 – Samuel

Powiązane problemy