我试图在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.
关于如何实现这一目标的任何想法?