是否可以使用TagLibSharp从MP3文件中删除Lyrics3v2标签?

ElektroStudios

我想知道是否可以使用TagLibSharp从MP3文件中删除Lyrics3v2标签类型

文档说,该块条目以单词“ LYRICSBEGIN开头,并以“ LYRICS200结尾,还说该ID3标签应该存在以使Lyrics3v2标签存在...但是它没有指定是否引用ID3v1无论如何, ID3v2标签或其中的任何一个我都不理解,因为Lyrics3v2标签是单个标签类型,也不是ID3v1 / ID3v2标签类型的一部分,它在mp3标头上有自己的条目,因此...我不了解ID3v1 / ID3v2 “依赖关系”的含义

无论如何,假设信息是正确的,那么我应该能够使用TagLibSharp从包含Lyrics3v2标签的mp3文件中删除ID3v1ID3v2标签,然后该标签也将被删除吗?但是,该标签仍然存在。

此外,Lyrics公开TagLibSharp的类属性似乎并不影响Lyrics3v2标签,所有这些都令人非常困惑。

ElektroStudios

我使用taglibsharp以下代码编写了此解决方案

' *************************************************************
' THIS CLASS IS PARTIALLY DEFINED FOR THIS STACKOVERFLOW ANSWER
' *************************************************************

Imports System.IO
Imports System.Text
Imports TagLib

''' <summary>
''' Represents the <c>Lyrics3</c> tag for a MP3 file.
''' </summary>
Public Class Lyrics3Tag

    Protected ReadOnly mp3File As Mpeg.AudioFile

    ''' <summary>
    ''' The maximum length for the <c>Lyrics3</c> block to prevent issues like removing a false-positive block of data.
    ''' <para></para>
    ''' Note that this is a personal attempt to prevent catastrophes, not based on any official info.
    ''' </summary>
    Private ReadOnly maxLength As Integer = 512 ' bytes

    Private Sub New()
    End Sub

    Public Sub New(ByVal mp3File As Mpeg.AudioFile)
        Me.mp3File = mp3File
    End Sub

    ''' <summary>
    ''' Entirely removes the <c>Lyrics3</c> tag.
    ''' </summary>
    <DebuggerStepThrough>
    Public Overridable Sub Remove()

        Dim initVector As New ByteVector(Encoding.UTF8.GetBytes("LYRICSBEGIN"))
        Dim initOffset As Long = Me.mp3File.Find(initVector, startPosition:=0)

        If (initOffset <> -1) Then

            ' The Lyrics3 block can end with one of these two markups, so we need to evaluate both.
            For Each str As String In {"LYRICS200", "LYRICSEND"}

                Dim endVector As New ByteVector(Encoding.UTF8.GetBytes(str))
                Dim endOffset As Long = Me.mp3File.Find(endVector, startPosition:=initOffset)

                If (endOffset <> -1) Then

                    Dim length As Integer = CInt(endOffset - initOffset) + (str.Length)
                    If (length < Me.maxLength) Then
                        Try
                            Me.mp3File.Seek(initOffset, SeekOrigin.Begin)
                            ' Dim raw As String = Me.mp3File.ReadBlock(length).ToString()
                            Me.mp3File.RemoveBlock(initOffset, length)
                            Exit Sub

                        Catch ex As Exception
                            Throw

                        Finally
                            Me.mp3File.Seek(0, SeekOrigin.Begin)

                        End Try

                    Else ' Length exceeds the max length.
                         ' We can handle it or continue...
                        Continue For

                    End If

                End If

            Next str

        End If

    End Sub

End Class

用法示例:

Dim mp3File As New Taglib.Mpeg.AudioFile("filepath")

Using lyrics As New Lyrics3Tag(mp3File)
    lyrics.Remove()
End Using

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以删除当前在mplayer中播放的MP3文件?

来自分类Dev

我可以使用Google文档转录MP3文件吗?

来自分类Dev

程序从mp3文件中删除图像

来自分类Dev

ffmpeg是否提供阻止在MP3文件中创建Info标签的选项?

来自分类Dev

是否可以从mp3文件或文件输入流中获取位图(专辑封面)?

来自分类Dev

如何使用laravel从文件夹中删除mp3文件

来自分类Dev

使用TagLibSharp读取APEv2 mp3标签吗?

来自分类Dev

使用ID3标签重命名mp3文件的程序

来自分类Dev

使用php通过http标头加载mp3文件时是否可以禁用mp3控件

来自分类Dev

如何删除mp3文件的元数据?

来自分类Dev

Opera是否支持音频mp3文件?

来自分类Dev

如何使用命令行将mp3文件变成具有可视化效果的Mp4文件?是否可以将包含MP3的文件夹批量转换为视频?

来自分类Dev

任何可在组中的mp3文件中编辑标签的ubuntu工具

来自分类Dev

任何可在组中的mp3文件中编辑标签的ubuntu工具

来自分类Dev

我意外删除了mp3设备上的mp3文件

来自分类Dev

如何使Windows Media Player 12从mp3文件中读取刷新的标签?

来自分类Dev

如何在Adobe Animate中为.mp3文件设置链接标签

来自分类Dev

在NodeJS中提供mp3文件以在音频标签中使用

来自分类Dev

解码mp3文件

来自分类Dev

复制Mp3文件

来自分类Dev

在Android中连续播放mp3文件

来自分类Dev

如何规范mp3文件中的声音

来自分类Dev

放大mp3文件中的安静段落

来自分类Dev

在Swift 2.0中暂停mp3文件

来自分类Dev

无法在Perl中访问mp3文件

来自分类Dev

如何使用ffmpeg修剪mp3文件?

来自分类Dev

使用`say`前缀mp3文件的标题

来自分类Dev

使用Rails上传/播放mp3文件

来自分类Dev

检查mp3文件是否在给定目录中

Related 相关文章

热门标签

归档