我正在尝试修剪一个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一直是真的。我在这里做错了什么?
提前致谢!
答案 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
属性来准确跟踪您自己的距离。