Taglib#是一个为.NET开发的元数据读取类库,为一个开源项目,可以在他们的官网上获取windows版本的源码包或者编译好的类库:http://download.banshee.fm/taglib-sharp/

可以使用下面的一个小小的类读取mp3音频文件中的ID3v2标签,类模块输出的字段包括最常用的专辑名称、专辑作者、歌曲标题和内嵌于mp3文件中的专辑封面。

内嵌的专辑封面的读取参阅这篇文章:http://social.msdn.microsoft.com/Forums/pl-PL/vbgeneral/thread/b540120b-1904-44ad-9448-9695482aebdf

Private Class ID3v2

Dim MP3 As TagLib.File= Nothing

Public lbAlbum, lbArtist, lbTitle As String

Public AlbumArt As Image = Nothing

Private Function GetString(ByVal str As String(), ByVal strDelimeter As String) As String

Dim value As String= Nothing

For i As Integer = 0 To str.Length - 1

value += str(i)

Ifi = str.Length - 1 Then Exit For

value += strDelimeter

Next

Return value

End Function

Sub New(ByVal lpFile As String)

MP3 = TagLib.File.Create(lpFile)

If MP3.Tag.Album = Nothing OrElse MP3.Tag.Album.Trim = "" Then

lbAlbum = "Unknown"

Else

lbAlbum = MP3.Tag.Album

End If

If MP3.Tag.Title = Nothing OrElse MP3.Tag.Title.Trim = "" Then

'如果歌曲标题字段为空,则默认使用文件名作Á为歌曲的标题

lbTitle = GetFileName(lpFile)

Else

lbTitle = MP3.Tag.Title

EndIf

lbArtist = GetString(MP3.Tag.AlbumArtists, ",")

If lbArtist = Nothing OrElse lbArtist.Trim = "" Then lbArtist = "Unknown"

If Not MP3.Tag.Pictures.Length >= 1 Then

AlbumArt = My.Resources.rhythmbox

Return

End If

'Esle

Dim bin = DirectCast(MP3.Tag.Pictures(0).Data.Data, Byte())

AlbumArt = Image.FromStream(New MemoryStream(bin)).GetThumbnailImage(115, 115, Nothing, System.IntPtr.Zero)

End Sub

Private Function GetFileName(ByVal path As String) As String

Dim Tmp As String() = Split(path, "\")

'找到文件拓展名,并将其去除

For i As Integer = Tmp(Tmp.Length - 1).Length To 1 Step -1

IfMid(Tmp(Tmp.Length - 1), i, 1) = "."Then ReturnMid(Tmp(Tmp.Length - 1), 1, i - 1).Trim

Next

'没有文件拓展名的,则直接返回文件名

Return Tmp(Tmp.Length - 1).Trim

End Function

End Class

嗯,效果吗,真的很不错

不过,似乎TagLib-Sharp对utf8编码的中文不是非常的兼容,读取的时候很容易出现乱码,对于中文字符串的处理似乎需要而外的解码处理,需要在日后查阅资料来解决这个问题,郁闷纠结中。。。

VB.NET使用TagLib#读取MP3中的ID3v2标签的更多相关文章

  1. C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)

    第二次更新,后面的代码有问题,有些专辑图片读取不到.发现是PNG图片的问题.在读取的过程中调试发现,图片帧前10个字节包含了图片的格式,在有些歌曲写着JPEG的格式,数据却是PNG的.先说下思路. j ...

  2. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  3. mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等

    mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...

  4. Open Xml 读取Excel中的图片

      在我的一个项目中,需要分析客户提供的Excel, 读出其中的图片信息(显示在Excel的第几行,第几列,以及图片本身). 网络上有许多使用Open Xml插入图片到Word,Excel的文章, 但 ...

  5. Python中如何读取xls中的数据

    要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd  安装方法:下载解压后,利用windows  dos命令进入解压目录eg,c ...

  6. 读取NVRAM中的SN(barcode)

    在Custom_NvRam_LID.h中,找到需要读取的ID对应的值 实现NvRAMAgent import java.lang.String; import android.os.RemoteExc ...

  7. php读取出字符串中的img标签中的图片路径

    php读取出字符串中的img标签中的图片路径 $pageContents = '字符串,带img标签'; $pageContents = str_replace('\"','"', ...

  8. iOS开发--应用设置及用户默认设置【2、读取应用中的设置】

            在上一节中,我们通过探讨应用的系统设置的基本功能,了解运用bundle捆绑包以及plist文件的基本开发.用户能够使用设置应用来声明他们的偏好设置,那么我们怎样去调用用户所设置的参数呢 ...

  9. IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中

    需求:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl” 请编写程序读取数据内容,把数据排序后写入ss.txt中. 分析: A:读取文件中的数据 B:把数 ...

随机推荐

  1. Xcode export/upload error: Your session has expired. Please log in 解决方法

    问题: 突然打包账号不好使了    重登  重启  清缓存  一套都打完了   还是不好使 解决方法:  删除掉其他账号 重新登录 参考网址 http://stackoverflow.com/ques ...

  2. react: redux-devTools

    import {composeWithDeTools} from 'redux-devtools-extension'; const bindMiddleware = middleware => ...

  3. sphinx使用

    一. 1.先得包含下载的文件 include'./sphinx/api/sphinxapi.php'; $sphinx= new SphinxClient(); $sphinx->SetServ ...

  4. HAWQ取代传统数仓实践(十一)——维度表技术之维度合并

    有一种合并维度的情况,就是本来属性相同的维度,因为某种原因被设计成重复的维度属性.例如,在销售订单示例中,随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中.客户维度的客户地址相关信息 ...

  5. 测试中认识 sqlite

    1.SQLite,是一款轻型的数据库:简单, 轻松的API 单词速记中单词离线包也用到sqlite 百度了一下,基本的使用语句: .help .quit sqlite3 testDB.db 在当前目录 ...

  6. asp.net viewstate 数据大导致错误

    当在ViewState中放入dataSet的数据量比较大的时候,当再点页面上的控件时,不会返回到后台,并且会出现如下错误: 或者是上面的12030改成500的错误. --解决方法:Viewstate绑 ...

  7. 演示使用Metasploit入侵Windows

    我使用Kali Linux的IP地址是192.168.0.112:在同一局域网内有一台运行Windows XP(192.168.0.108)的测试电脑. 本文演示怎么使用Metasploit入侵win ...

  8. phpcms v9 csdn老手记录

    http://blog.csdn.net/yanhui_wei/article/category/1220735

  9. Python之属性、特性和修饰符

    作为面对对象的核心内容,将从以下一个方面进行总结: 1. property和@property 2. __getattribute__().__getattr__().__setattr__().__ ...

  10. sql_自连接,181,182,196,197

    181. Employees Earning More Than Their Managers https://leetcode.com/problems/employees-earning-more ...