📄 使用visual basic解释mp3的tag信息.txt
字号:
Windows Media Player提 供 了 Visual Basic程 序 方 便 快 捷 的 播 放 MP3的 能 力 。 一 旦 你 拥 有 一 个 MP3文 件 , 你 可 能 想 知 道 如 何 读 取 一 首 歌 的 信 息 , 象 歌 曲 的 标 题 和 艺 术 家 的 名 字 。 如 果 MP3文 件 使 用 最 流 行 的 tag加 密 方 法 ID3, 则 你 很 幸 运 。 这 个 标 准 保 存 Tag信 息 在 文 件 的 最 后 128个 字 节 中 (Tag:3, 标 题 :30, 艺 术 家 :30,纪 念 册 :30, 年 :4, 注 释 :30, 流 派 :1)
为 了 读 取 信 息 , 先 打 开 MP3文 件 , 然 后 读 最 后 128字 节 。 按 照 ID3, 如 果 文 件 中 包 括 信 息 , 前 三 个 字 节 应 该 存 储 字 符 TAG。 如 果 确 实 包 含 Tag信 息 , 保 存 最 后 128字 节 进 一 个 定 制 变 量 。 这 之 后 , 遍 历 MP3文 件 , 提 取 你 要 的 信 息 。 下 面 的 过 程 演 示 了 提 取 的 代 码 , 同 时 建 立 了 几 个 后 面 要 用 到 的 重 要 变 量 。
Option Explicit
Private Type TagInfo
Tag As String * 3
Songname As String * 30
artist As String * 30
album As String * 30
year As String * 4
comment As String * 30
genre As String * 1
End Type
Dim FileName As String
Dim CurrentTag As TagInfo
Private Sub Form1_Load()
Dim temp As String
On Error Resume Next
FileName = App.Path & "\myMP3.mp3"
Open FileName For Binary As #1
With CurrentTag
Get #1, FileLen(FileName) - 127, .Tag
If Not .Tag = "TAG" Then
label8.Caption = "No tag"
Close #1
Exit Sub
End If
Get #1, , .Songname
Get #1, , .artist
Get #1, , .album
Get #1, , .year
Get #1, , .comment
Get #1, , .genre
Close #1
txtTitle = RTrim(.Songname)
txtArtist = RTrim(.artist)
txtAlbum = RTrim(.album)
txtYear = RTrim(.year)
txtComment = RTrim(.comment)
Temp = RTrim(.genre)
txtGenreCode = Asc(Temp)
Combo1.ListIndex = CInt(txtGenreCode) - 1
End With
End Sub
注 意 代 码 中 处 理 流 派 字 符 有 点 不 同 。 这 是 因 为 ID3保 存 数 据 为 一 个 单 独 的 ASCII字 符 。 为 了 匹 配 实 际 对 应 的 描 述 ( 包 括 在 一 个 组 合 框 中 ) , 这 个 过 程 转 换 ASCII字 符 为 一 个 数 字 , 然 后 在 组 合 框 中 查 找 。
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -