VB.NET使用TagLib#读取MP3中的ID3v2标签
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标签的更多相关文章
- C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
第二次更新,后面的代码有问题,有些专辑图片读取不到.发现是PNG图片的问题.在读取的过程中调试发现,图片帧前10个字节包含了图片的格式,在有些歌曲写着JPEG的格式,数据却是PNG的.先说下思路. j ...
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等
mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...
- Open Xml 读取Excel中的图片
在我的一个项目中,需要分析客户提供的Excel, 读出其中的图片信息(显示在Excel的第几行,第几列,以及图片本身). 网络上有许多使用Open Xml插入图片到Word,Excel的文章, 但 ...
- Python中如何读取xls中的数据
要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd 安装方法:下载解压后,利用windows dos命令进入解压目录eg,c ...
- 读取NVRAM中的SN(barcode)
在Custom_NvRam_LID.h中,找到需要读取的ID对应的值 实现NvRAMAgent import java.lang.String; import android.os.RemoteExc ...
- php读取出字符串中的img标签中的图片路径
php读取出字符串中的img标签中的图片路径 $pageContents = '字符串,带img标签'; $pageContents = str_replace('\"','"', ...
- iOS开发--应用设置及用户默认设置【2、读取应用中的设置】
在上一节中,我们通过探讨应用的系统设置的基本功能,了解运用bundle捆绑包以及plist文件的基本开发.用户能够使用设置应用来声明他们的偏好设置,那么我们怎样去调用用户所设置的参数呢 ...
- IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中
需求:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl” 请编写程序读取数据内容,把数据排序后写入ss.txt中. 分析: A:读取文件中的数据 B:把数 ...
随机推荐
- Xcode export/upload error: Your session has expired. Please log in 解决方法
问题: 突然打包账号不好使了 重登 重启 清缓存 一套都打完了 还是不好使 解决方法: 删除掉其他账号 重新登录 参考网址 http://stackoverflow.com/ques ...
- react: redux-devTools
import {composeWithDeTools} from 'redux-devtools-extension'; const bindMiddleware = middleware => ...
- sphinx使用
一. 1.先得包含下载的文件 include'./sphinx/api/sphinxapi.php'; $sphinx= new SphinxClient(); $sphinx->SetServ ...
- HAWQ取代传统数仓实践(十一)——维度表技术之维度合并
有一种合并维度的情况,就是本来属性相同的维度,因为某种原因被设计成重复的维度属性.例如,在销售订单示例中,随着数据仓库中维度的增加,我们会发现有些通用的数据存在于多个维度中.客户维度的客户地址相关信息 ...
- 测试中认识 sqlite
1.SQLite,是一款轻型的数据库:简单, 轻松的API 单词速记中单词离线包也用到sqlite 百度了一下,基本的使用语句: .help .quit sqlite3 testDB.db 在当前目录 ...
- asp.net viewstate 数据大导致错误
当在ViewState中放入dataSet的数据量比较大的时候,当再点页面上的控件时,不会返回到后台,并且会出现如下错误: 或者是上面的12030改成500的错误. --解决方法:Viewstate绑 ...
- 演示使用Metasploit入侵Windows
我使用Kali Linux的IP地址是192.168.0.112:在同一局域网内有一台运行Windows XP(192.168.0.108)的测试电脑. 本文演示怎么使用Metasploit入侵win ...
- phpcms v9 csdn老手记录
http://blog.csdn.net/yanhui_wei/article/category/1220735
- Python之属性、特性和修饰符
作为面对对象的核心内容,将从以下一个方面进行总结: 1. property和@property 2. __getattribute__().__getattr__().__setattr__().__ ...
- sql_自连接,181,182,196,197
181. Employees Earning More Than Their Managers https://leetcode.com/problems/employees-earning-more ...