NAudio修剪mp3文件

时间:2017-02-03 21:46:50

标签: wpf audio trim naudio

我正在尝试修剪一个mp3文件。 使用此代码:

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

“打开”是我正在修剪的文件,“保存”是我正在保存的位置。 修剪工作但不完全。新文件确实从60秒开始,但它继续运行而不是在90秒停止。例如,如果文件是3分钟,它将从1分钟开始并以3结束。就像while一直是真的。我在这里做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:0)

我不知道你Mp3FileReader在那里做了什么。但是你的while loop看起来很奇怪。 mp3FileRead.ReadNextFrame()是否也会更改mp3FileReader.CurrentTime?如果没有那么就有问题了。 你应该至少做mp3FileReader.CurrentTime + 1Frame。否则,您的当前时间永远不会改变,循环将始终为true

答案 1 :(得分:0)

在NAudio 1.8.0中,Mp3FileReader.ReadNextFrame没有进展CurrentTime,尽管最近我checked in a fix

因此,您可以获取最新的NAudio代码,或者使用每个SampleCount上的Mp3Frame属性来准确跟踪您自己的距离。