从MP3文件中删除第一帧

时间:2016-05-01 19:18:00

标签: vb.net mp3 naudio

我试图在Visual Basic中删除第一帧/ 26ms的MP3文件。我找到了NAudio库,我一直试图让它工作,但文档不存在,似乎给我带来了很大的烦恼。

    Private Sub TrimMp3(inputPath As String, outputPath As String, begin As System.Nullable(Of TimeSpan), [end] As System.Nullable(Of TimeSpan))
    If begin.HasValue AndAlso [end].HasValue AndAlso begin > [end] Then
        Throw New ArgumentOutOfRangeException("end", "end should be greater than begin")
    End If

    Using reader = New Mp3FileReader(inputPath)
        Using writer = File.Create(outputPath)
            Dim frame As Mp3Frame
            While (InlineAssignHelper(frame, reader.ReadNextFrame())) IsNot Nothing
                If reader.CurrentTime >= begin OrElse Not begin.HasValue Then
                    If reader.CurrentTime <= [end] OrElse Not [end].HasValue Then
                        writer.Write(frame.RawData, 0, frame.RawData.Length)
                    Else
                        Exit While
                    End If
                End If
            End While
        End Using
    End Using
End Sub

这是我发现的片段,我从C#转换为VB.net,问题是我不知道传入文件的长度是多少 - 所以我无法设置结束 - 时间。

我也考虑过使用ffmpeg,但由于文件(一首歌,分成12个文件),标题遍布各处,所以每次运行

ffmpeg -ss 00:00:00.026 -i A.mp3 -acodec  copy A.mp3 -y

我得到了

Audio packet of size 44 (starting with C829D411...) is invalid, writing it anyway.

关于如何实现这一目标的任何想法?

0 个答案:

没有答案