我正在尝试使用我在Stackoverflow上找到的一些代码,使用NAudio扩展或修剪mp3文件。一切正常,但是某些音频播放器在播放时显示错误的持续时间(原始音频文件的持续时间)。有什么想法我可以解决这个问题吗?
public async Task ExtendOrTrim(string sourcePath, double length, string destinationPath)
{
double totaltrack = 0;
using (var output = File.Create(destinationPath))
{
while (totaltrack < length)
{
using (var source = Assembly.GetExecutingAssembly().GetManifestResourceStream(sourcePath))
{
var reader = new Mp3FileReader(source);
if ((output.Position == 0) && (reader.Id3v2Tag != null))
{
output.Write(reader.Id3v2Tag.RawData, 0, reader.Id3v2Tag.RawData.Length);
}
Mp3Frame frame;
while ((frame = reader.ReadNextFrame()) != null && reader.CurrentTime.TotalSeconds + totaltrack < length)
{
output.Write(frame.RawData, 0, frame.RawData.Length);
}
totaltrack += reader.CurrentTime.TotalSeconds;
}
}
}
}