Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NAudio修剪mp3文件_C#_Naudio - Fatal编程技术网

C# 使用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

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

是的,mp3文件是一系列mp3帧,因此您可以简单地从开始或结束处删除帧来修剪文件。NAudio可以解析MP3帧


有关更多详细信息,请参阅。

从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,其中一些播放器的长度检测不正确。似乎有些播放器检测到旧的(预修剪)长度。有没有办法纠正这个问题?