1

我在 VB.NET 2005 中做一个项目,我必须在其中提取 mp3 文件的标签信息。为此,我在此页面中使用了代码。但问题是当其中一个标签为空时,它没有返回任何值。

例如,使用它我可以像这样检索专辑信息,

    Dim album As String = ""
    album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)

但是我不知道如何检查专辑变量是否为空,我检查了专辑变量

    If (album = "") Then
        MsgBox("true")
    ElseIf (album Is Nothing) Then
        MsgBox("true")
    ElseIf (album Is DBNull.Value) Then
        MsgBox("true")
    End If

但没有成功,有人可以帮助我。

4

2 回答 2

3

ID3v1 标记存储在文件的最后 128 个字节中。前三个字节是“TAG”,表示文件存储了标签。所以首先检查文件是否有标签,然后读取它们。

我不知道VB,但我认为在阅读框架之前,您应该首先:

  1. 打开文件Dim objMP3V1 As New MP3ID3v1("file_path")
  2. 通过测试objMP3V1.TagExists标志是否为真来测试文件中是否包含 ID3v1 标记
  3. 然后读取字段/帧。

编辑

链接中的代码说

FileGet(intFile, strTag, lngLOF - 127, True)
        If (strTag.ToUpper <> "TAG") Then

            ' No ID3v1 tag found

            mblnTagExists = False
            mobjFrame(0) = ""
            mobjFrame(1) = ""
            mobjFrame(2) = ""
            mobjFrame(3) = ""
            mobjFrame(4) = ""
            mobjFrame(5) = ""
            mobjFrame(6) = ""

        Else

            ' ID3v1 tag found

            mblnTagExists = True

            ' Read all frames from the file

            FileGet(intFile, strTitle)
            FileGet(intFile, strArtist)
            FileGet(intFile, strAlbum)
            FileGet(intFile, strYear)
            FileGet(intFile, strComment)
            FileGet(intFile, bytDummy)
            FileGet(intFile, bytTrack)
            FileGet(intFile, bytGenre)

            ' Assign the frame content to the properties

            mobjFrame(0) = strTitle
            mobjFrame(1) = strArtist
            mobjFrame(2) = strAlbum
            mobjFrame(3) = strYear
            mobjFrame(4) = bytTrack
            mobjFrame(5) = strComment
            mobjFrame(6) = bytGenre

        End If
    End If

因此,如果标签不存在,那么它应该""被分配为字符串。

ID3v1 字段是固定长度的,所以如果字段中没有字符串,album那么它应该包含一个 num 字符串,即该字段的第一个位置将包含一个空字符'\0',因此它会返回一个空字符串""。我会告诉你在带有 ID3v1 标签的示例音乐文件上检查这个。(您甚至可以创建一个使用 ID3v1 格式化的文本文件并对其进行测试)。

于 2011-06-12T06:32:09.963 回答
0

我已经使用正则表达式来解决这个问题。感谢你的帮助...

Imports System.Text.RegularExpressions
dim RegEx As New RegularExpressions.Regex("^[a-zA-Z0-9]+$")
dim Match As Match
dim film as string
film = song.Frame(MP3ID3v1.FrameTypes.Album)
Match = RegEx.Match(film)
film1 = IIf((Match.Success), film.ToString, "")  

如果您正在寻找更专业的标签编辑器 这里有一个链接

于 2011-06-14T02:29:57.963 回答