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:把数 ...
随机推荐
- sql语言分类与整理:DQL\DML\DDL
整体分为三类: 数据库查询语言(DQL,data QUERY LANGUAGE):对表的查询语句,select 数据库定义语言(DDL,data defined LANGUAGE):create da ...
- 【sparkSQL】创建DataFrame及保存
首先我们要创建SparkSession val spark = SparkSession.builder() .appName("test") .master("loca ...
- 常见CSS浏览器兼容性问题与解决方案【转载自http://blog.csdn.net/chuyuqing/article/details/37561313/】
所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...
- HData——ETL 数据导入/导出工具
HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC.Hive.HDFS.HBase.MongoDB.FTP.Http.CSV.Excel.Kafka等)之间数据 ...
- Android中从SD卡中读取歌曲
先看看我的效果图吧 Activity类 private TextView nameTextView; private SeekBar seekBar; private ListView listVie ...
- Ganymed实现基本的自动化部署API
Ganymed SSH-2 for Java是一个纯Java实现的SHH2库,官网为http://www.ganymed.ethz.ch/ssh2/,最新的更新时间为2006年10月,在用之前,请仔细 ...
- MySQL 的中文乱码问题终结
中文正确 1:保存sql脚本文件 utf8 !!!!! ANSI<-->GBK 2:打开mysql窗口 SET NAMES UTF8; 每次新打开窗口执行指令 3:SOURCE d:/1. ...
- Ubuntu 16.04 为 PHP7 添加 memcached 以及 redis 扩展
切换到 PHP 7 之后,网站的速度大幅提升,不过通常的扩展可能某一个就还没有支持 PHP7 Memcached 比如说我现在使用了最新的 Ubuntu 16.04,虽然内置了 PHP 7 源,但 m ...
- (十一)java循环结构
while(循环的条件) {循环的语句} int a = 1; while(a < 5) { System.out.println(a);//1,2,3,4 a++; } System.out. ...
- LUAROCKS 报错解决办法
用luarocks 加载包时报错 Warning: falling back to curl - install luasec to get native HTTPS support 此时先安装 ./ ...