2011-10-28 7 views
5

Có thể cắt một tệp MP3 bằng NAudio không? Tôi đang tìm một cách để lấy một tập tin mp3 tiêu chuẩn và lấy một phần của nó và làm cho nó một mp3 riêng biệt.Cắt các tệp mp3 bằng NAudio

+0

Câu hỏi này sẽ được mở lại. Nó không phải là một bản sao. Tôi đã trả lời cả hai câu hỏi và câu trả lời là khác nhau. –

+0

@RonnieOverby Đồng ý, mở lại :) –

Trả lời

2

Có, tệp MP3 là một chuỗi các khung MP3, vì vậy bạn có thể chỉ cần xóa khung hình từ đầu hoặc cuối để cắt tệp. NAudio có thể phân tích các khung MP3.

Xem this question để biết thêm chi tiết.

9

Install NAudio từ NuGet:

PM> Install-Package NAudio 

Thêm using NAudio.Wave; và sử dụng mã này:

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

Chúc mừng những con đường mòn.

+1

Sử dụng phương pháp này, tôi còn lại với một mp3 có chiều dài được phát hiện không chính xác trong một số người chơi. Nó xuất hiện một số người chơi phát hiện chiều dài cũ (cắt sẵn). Có cách nào để khắc phục điều này? – Jarrod

+0

Công trình này được thử nghiệm với NAudio 1.7 – Samuel