C# 使用NAudio修剪mp3文件
是否可以使用NAudio修剪MP3文件?我正在寻找一种方法来获取一个标准mp3文件,并获取其中的一部分,使其成为一个单独的mp3。是的,mp3文件是一系列mp3帧,因此您可以简单地从开始或结束处删除帧来修剪文件。NAudio可以解析MP3帧C# 使用NAudio修剪mp3文件,c#,naudio,C#,Naudio,是否可以使用NAudio修剪MP3文件?我正在寻找一种方法来获取一个标准mp3文件,并获取其中的一部分,使其成为一个单独的mp3。是的,mp3文件是一系列mp3帧,因此您可以简单地从开始或结束处删除帧来修剪文件。NAudio可以解析MP3帧 有关更多详细信息,请参阅。从Nuget安装NAudio: PM> Install-Package NAudio 使用NAudio.Wave添加并使用此代码: void Main() { var mp3Path = @"C:\Users\Ro
有关更多详细信息,请参阅。从Nuget安装NAudio:
PM> Install-Package NAudio
使用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;
}
}
}
void Main()
{
var mp3Path=@“C:\Users\Ronnie\Desktop\podcasts\hanselminutes_0350.mp3”;
var outputPath=Path.ChangeExtension(mp3Path,“.trimmed.mp3”);
Trimp3(mp3Path、outputPath、TimeSpan.FromMinutes(2)、TimeSpan.FromMinutes(2.5));
}
void trimp3(字符串输入路径、字符串输出路径、TimeSpan?开始、TimeSpan?结束)
{
if(begin.HasValue&&end.HasValue&&begin>end)
抛出新ArgumentOutOfRangeException(“结束”,“结束应大于开始”);
使用(var读取器=新的Mp3FileReader(inputPath))
使用(var writer=File.Create(outputPath))
{
Mp3Frame;
而((frame=reader.ReadNextFrame())!=null)
if(reader.CurrentTime>=begin | |!begin.HasValue)
{
如果(reader.CurrentTime)这个问题应该重新打开。它不是重复的。我已经回答了两个问题,但答案不同。@RonnieOverby同意,重新打开:)使用此方法,我只剩下一个mp3,其中一些播放器的长度检测不正确。似乎有些播放器检测到旧的(预修剪)长度。有没有办法纠正这个问题?