ID3介绍:

ID3,一般是位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息,ID3信息分为两个版本,v1和v2版。  

  获取歌曲的ID3信息,我使用的插件是Do Anything With ID3 。

主要代码:

using ID3;
using ID3.ID3v2Frames.BinaryFrames; namespace Testid3
{
class Program
{
//参考:
//Do Anything With ID3 - 赤色火焰 - 博客园 http://www.cnblogs.com/mgod/archive/2009/01/19/1377995.html //id3v2.3.0 - ID3.org http://id3.org/id3v2.3.0#sec4.1 //Do Anything With ID3 - CodeProject http://www.codeproject.com/Articles/17890/Do-Anything-With-ID static void Main(string[] args)
{
string file = @"E:\abcdef/123.mp3";
//http://www.cnblogs.com/babycool
ID3Info Data = new ID3Info(file, true);
var id31 = Data.ID3v1Info;
var id32 = Data.ID3v2Info;
//判断是否有id3v1
bool isid31 = id31.HaveTag;
//判断是否有id3v2
bool isid32 = id32.HaveTag; StringBuilder sbuilder = new StringBuilder(); if (isid31)
{
sbuilder.AppendLine("--------------id31---------");
sbuilder.AppendLine(string.Format("Title : {0}", id31.Title)); sbuilder.AppendLine(string.Format("artist : {0}", id31.Artist)); sbuilder.AppendLine(string.Format("album : {0}", id31.Album));
sbuilder.AppendLine(string.Format("genre : {0}", id31.Genre)); } if (isid32)
{
sbuilder.AppendLine("--------------id32---------");
//if (id32.VersionInfo.Minor != 3 && id32.VersionInfo.Minor != 4)
//{ //} //id3v2 版本
sbuilder.AppendLine(string.Format("version: {0}",id32.VersionInfo.ToString()));
//TIT2 标题/ Songname /内容描述
sbuilder.AppendLine(string.Format("Title:{0}", id32.GetTextFrame("TIT2")));
//TPE1 主艺术家
sbuilder.AppendLine(string.Format("Artist:{0}", id32.GetTextFrame("TPE1")));
//TALB 'Album/Movie/Show title 专辑
sbuilder.AppendLine(string.Format("Album:{0}", id32.GetTextFrame("TALB")));
//类型
sbuilder.AppendLine(string.Format("Genre:{0}", id32.GetTextFrame("TCON")));
//音轨
sbuilder.AppendLine(string.Format("Tracl:{0}", id32.GetTextFrame("TRCK")));
//时长
sbuilder.AppendLine(string.Format("时长:{0}", id32.GetTextFrame("TIME")));
sbuilder.AppendLine(string.Format("大小:{0}", id32.GetTextFrame("TLEN"))); } Console.WriteLine(sbuilder.ToString()); Console.ReadKey(); }
}
}

结果:

转载请注明出处。

[开发笔记]-获取歌曲ID3信息的更多相关文章

  1. NX二次开发-UFUN获取系统相关信息UF_ask_system_info

    NX9+VS2012 #include <uf.h> UF_initialize(); UF_system_info_t Info; UF_ask_system_info(&Inf ...

  2. NX二次开发-UFUN获取工程图详细信息UF_DRAW_ask_drawing_info

    NX9+VS2012 #include <uf.h> #include <uf_draw.h> #include <uf_part.h> UF_initialize ...

  3. iOS开发中获取WiFi相关信息

    iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...

  4. Android 开发 ContentProvider 获取歌曲列表和联系人的样例

    ContentProvider(内容提供者)是Android中的四大组件之中的一个. 主要用于对外共享数据.也就是通过ContentProvider把应用中的数据共享给其它应用訪问.其它应用能够通过C ...

  5. Android软件开发之获取通讯录联系人信息

    Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息拿出来. 这一篇文章我主要带领同学们熟悉Android的通讯录机制. 图中选中 ...

  6. python开发_platform_获取操作系统详细信息工具

    ''' python中,platform模块给我们提供了很多方法去获取操作系统的信息 如: import platform platform.platform() #获取操作系统名称及版本号,'Win ...

  7. iOS 开发笔记-获取某个APP素材

    2019.02.01 更新 以下这种方式只适合越狱的手机,目前12.1以后,iTools已经不适合了,请看最下面第二种方式. 有时候,我们看到别人的APP做得挺漂亮的,那么我们想查看该APP的图片素材 ...

  8. Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件

    前言   上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤.   受限制   因为直接配置sample的vi比较麻烦 ...

  9. iOS 整理笔记 获取手机信息(UIDevice、NSBundle、NSLocale)

    /*    iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发ap ...

随机推荐

  1. JavaWeb学习总结(六)—HttpServletResponse

    Response概述: response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服务 ...

  2. 【Todo】LR-逻辑回归

    因为逻辑回归对于计算广告学非常重要.也是我们平时广告推荐.CTR预估最常用到的算法.所以单独开一篇文章讨论. 参考这篇文章:http://www.cnblogs.com/sparkwen/p/3441 ...

  3. Echarts柱形图颜色设置

    ECharts图为每个数据项配置颜色 (2014-11-12 15:52:53) 转载▼ 标签: 时尚 分类: 开发学习 其实给每个数据项配置很简单 只需要在series里面给data数组的每个元素设 ...

  4. Linux chmod命令修改文件与文件夹权限的命令附实例

    Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需 ...

  5. Javascript的操作符

    1.一元加和减操作符主要用于基本的算术运算,也可以像Number()转型函数一样用于转换数据类型. 2.位操作符用于在最基本的层次上,即按内存中表示数据的位来操作数值. 3.正数直接以纯二进制格式存储 ...

  6. xcode5 python 开发环境

    在xcode5 下配置 python开发环境 1:默认mac下已经集成了python的开发库,先找到集成的python库的目录 终端 which python 记下当前的python 路径 /usr/ ...

  7. 串行通讯之UARTLoopback

    目录 第1章串行通讯之UARTLoopback    2 1 USB转串口    2 2 USB Accessory    2 3 连入手机    3 4 代码改进    4 5 打开串口    4 ...

  8. Android 应用开发耗电量控制。。

    当程序启动手机越多的模块,那耗电就越快 当你的程序运行时只占用CPU的时候,这时候耗电量是最少的. 当然这时候如果cpu的运行速度很慢那是最好的.. 程序耗电量控制首要从下面3个方面抓起: 1.频繁的 ...

  9. DispatcherServlet默认配置

    DispatcherServlet的默认配置在DispatcherServlet.properties(和DispatcherServlet类在一个包下)中,而且是当Spring配置文件中没有指定配置 ...

  10. 【CITE】C# 如何 实现一个窗体和另一个窗体始终保持相对的位置

    C# 如何 实现一个窗体和另一个窗体始终保持相对的位置,任由一个窗体移动,当点击按钮时,弹出的另一个窗体也与之保持相对位置(如左上角)你根据第一个窗体的location去算第二个窗体的location ...