使用 NAudio 修剪 mp3 文件

Posted

技术标签:

【中文标题】使用 NAudio 修剪 mp3 文件【英文标题】:Trimming mp3 files using NAudio 【发布时间】:2011-10-28 17:51:59 【问题描述】:

是否可以使用 NAudio 修剪 MP3 文件?我正在寻找一种方法来获取标准的 mp3 文件并将其提取一部分并使其成为单独的 mp3。

【问题讨论】:

这个问题应该重新打开。它不是重复的。我已经回答了这两个问题,但答案不同。 @RonnieOverby 同意,重新打开 :) 【参考方案1】:

从 Nuget 安装 NAudio:

PM> Install-Package NAudio

添加using NAudio.Wave; 并使用此代码:

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;
        
    

快乐的足迹。

【讨论】:

使用这种方法,我留下了一个 mp3,它的长度在某些播放器中被错误地检测到。似乎有些玩家检测到旧的(预先修剪的)长度。有没有办法纠正这个问题?【参考方案2】:

是的,MP3 文件是一系列 MP3 帧,因此您只需从开头或结尾删除帧即可修剪文件。 NAudio 可以解析 MP3 帧。

更多详情请见this question。

【讨论】:

以上是关于使用 NAudio 修剪 mp3 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 1.7+ 播放音频文件

使用 NAudio 处理后播放 wav 文件

使用 NAudio 从 MIDI 文件中读取音符

使用 NAudio 替换视频的音频流

如何使用 NAudio 对波形文件执行 FFT

使用 Vorbis 和 NAudio 播放 OGG 文件