2011-10-28 32 views
5

¿Es posible recortar un archivo MP3 usando NAudio? Estoy buscando una manera de tomar un archivo mp3 estándar y tomar parte de él y convertirlo en un mp3 separado.Recorte de archivos mp3 usando NAudio

+0

Esta pregunta debe volver a abrirse. No es un duplicado He respondido ambas preguntas y las respuestas son diferentes. –

+0

@RonnieOverby De acuerdo, vuelto a abrir :) –

Respuesta

2

Sí, un archivo MP3 es una secuencia de cuadros MP3, por lo que puede simplemente eliminar fotogramas desde el principio o el final para recortar el archivo. NAudio puede analizar marcos de MP3.

Ver this question para más detalles.

9

Instalar NAudio de Nuget:

PM> Install-Package NAudio 

Añadir using NAudio.Wave; Utilizando este código:

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

Usando este método, me queda un mp3 cuya longitud se detecta incorrectamente en algunos jugadores. Parece que algunos jugadores detectan la longitud anterior (precortado). ¿Hay alguna manera de corregir esto? – Jarrod

+0

Esto funciona, probado con NAudio 1.7 – Samuel

Cuestiones relacionadas