获取MP3歌曲信息 歌曲名 歌手名 专辑等
/// <summary>/// 定义结构,存放mp3信息/// </summary>public struct Mp3Info{public string identify;//TAG,三个字节 public string Title;//歌曲名,30个字节 public string Artist;//歌手名,30个字节 public string Album;//所属唱片,30个字节 public string Year;//年,4个字符 public string Comment;//注释,28个字节 public char reserved1;//保留位,一个字节 public char reserved2;//保留位,一个字节 public char reserved3;//保留位,一个字节 }/// <summary>/// 取出mp3的最后128字节的信息/// </summary>/// <param name="filename"></param>/// <returns></returns>private byte[] getsonginfo(string filename){FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);Stream stream = fs;stream.Seek(-128, SeekOrigin.End);const int seekPos = 128;int rl = 0;byte[] Info = new byte[seekPos];rl = stream.Read(Info, 0, seekPos);fs.Close();stream.Close();return Info;}/// <summary> /// 获取MP3歌曲的相关信息 /// </summary> /// <param name = "Info">从MP3文件中截取的二进制信息</param> /// <returns>返回一个Mp3Info结构</returns> private Mp3Info getMp3Info(byte[] Info){Mp3Info mp3Info = new Mp3Info();string str = null;int i;int position = 0;//循环的起始值 int currentIndex = 0;//Info的当前索引值 //获取TAG标识 for (i = currentIndex; i < currentIndex + 3; i++){str = str + (char)Info[i];position++;}currentIndex = position;mp3Info.identify = str;//获取歌名 str = null;byte[] bytTitle = new byte[30];//将歌名部分读到一个单独的数组中 int j = 0;for (i = currentIndex; i < currentIndex + 30; i++){bytTitle[j] = Info[i];position++;j++;}currentIndex = position;mp3Info.Title = this.byteToString(bytTitle);//获取歌手名 str = null;j = 0;byte[] bytArtist = new byte[30];//将歌手名部分读到一个单独的数组中 for (i = currentIndex; i < currentIndex + 30; i++){bytArtist[j] = Info[i];position++;j++;}currentIndex = position;mp3Info.Artist = this.byteToString(bytArtist);//获取唱片名 str = null;j = 0;byte[] bytAlbum = new byte[30];//将唱片名部分读到一个单独的数组中 for (i = currentIndex; i < currentIndex + 30; i++){bytAlbum[j] = Info[i];position++;j++;}currentIndex = position;mp3Info.Album = this.byteToString(bytAlbum);//获取年 str = null;j = 0;byte[] bytYear = new byte[4];//将年部分读到一个单独的数组中 for (i = currentIndex; i < currentIndex + 4; i++){bytYear[j] = Info[i];position++;j++;}currentIndex = position;mp3Info.Year = this.byteToString(bytYear);//获取注释 str = null;j = 0;byte[] bytComment = new byte[28];//将注释部分读到一个单独的数组中 for (i = currentIndex; i < currentIndex + 25; i++){bytComment[j] = Info[i];position++;j++;}currentIndex = position;mp3Info.Comment = this.byteToString(bytComment);//以下获取保留位 mp3Info.reserved1 = (char)Info[++position];mp3Info.reserved2 = (char)Info[++position];mp3Info.reserved3 = (char)Info[++position];return mp3Info;}/// <summary> /// 将字节数组转换成字符串 /// </summary> /// <param name = "b">字节数组</param> /// <returns>返回转换后的字符串</returns> private string byteToString(byte[] b){Encoding enc = Encoding.GetEncoding("GB2312");string str = enc.GetString(b);str = str.Substring(0, str.IndexOf('\0') >= 0 ? str.IndexOf('\0') : str.Length);//去掉无用字符 return str;}/// <summary> /// 更改文件名 /// </summary> /// <param name="filePath">文件名</param> /// <returns></returns> private string ReName(string filePath){if (File.Exists(filePath)){try{Mp3Info mp3Info = new Mp3Info();mp3Info = this.getMp3Info(this.getsonginfo(filePath));//读出文件信息 if (mp3Info.Title.Trim().Length == 0){mp3Info.Title = "未知名歌曲";//这段我自己修改过,当歌曲名信息为空时,显示未知名歌曲,而后再显示文件名}return mp3Info.Title.ToString();}catch (Exception){return "";}}else{return "";}}
获取MP3歌曲信息 歌曲名 歌手名 专辑等相关推荐
- java mp3 信息_Java代码获取Mp3音乐的歌名、歌手、专辑名等信息
这里介绍的是使用Jaudiotagger库获取Mp3音频文件的歌名.歌手.专辑名等信息.使用的jaudiotagger-2.2.6-SNAPSHOT.jar包下载地址:Download. 实现代码如下 ...
- C# 获取mp3文件的歌曲时间长度
C# 获取mp3文件的歌曲时间长度 1.添加命名空间 using Shell32; using System.Text.RegularExpressions; 2.添加COM组件 Micr ...
- jaudiotagger获取MP3文件信息及封面图片
#jaudiotagger获取MP3文件信息及封面图片 ###maven依赖: <dependency><groupId>org</groupId><arti ...
- php 获取mp3信息,php获取mp3音频信息实例教程
php获取mp3音频信息 很早之前在网上看到一个获取 MP3 音频信息的 php 类.如:播放时长.文件大小.文件编码等等<?php class mp3file { protected $blo ...
- PYTHON 2.7爬虫获取百度音乐文件(按歌手名或歌曲名均可)
2018.8.3 有点小错误正在修改!!!! 2018.8.6 修正完毕,存在小问题(歌手有多个,会创建多个文件夹) 最近学习了关于python的一点点知识,做出一点点小小程序来帮助自己加深 ...
- java获取MP3文件信息(歌手,歌名,封面,专辑,时长)
可以用本地的文件地址测试(令url=文件地址) package com.test.inside.util;import org.jaudiotagger.audio.AudioFileIO; impo ...
- 获取歌曲信息歌曲详细信息
# -*- coding: utf-8 -*- from mutagen.mp3 import MP3 import osclass GetMp3Info():'''获取歌曲信息'''def __in ...
- C#获取mp3 Tag信息
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace Foxer_ ...
- java mp3 信息_android,java获取MP3文件信息(作者,专辑等)
接着上一篇文章, 上一篇把ndk开发遍历手机文件分享了一下.遍历出来的MP3文件,我需要展示在android的listview里面,想展示的好看一点,结果发现又是一个坑. 根据mp3文件,获取作者啊专 ...
最新文章
- OGRE例子:Demo_Ocean 源码解析
- in的绑定 mysql_MySQL IN语句的PDO绑定值
- 组信箱共享及挂载介绍
- Livy安装使用(Spark rest接口服务工具)
- mysql mail_vpopmail+mysql
- TIOBE 7 月编程语言榜:TypeScript 进入前 50 名
- 【Android 修炼手册】常用技术篇 -- Android 自定义 View
- [转]这才是真正的3D显示!Leap Motion推出次毫米级3D手动控制技术,让人手和影像融为一体...
- JAVA学习-数组元素排序
- Java与Web前端发展前景及薪资对比
- 最简单的TCP网络封包解包(补充)-序列化
- WPS 破解宏 安装VBA VBA for WPS
- linux服务器上的cad病毒,LibreCAD_LibreCAD下载[2021官方最新版]LibreCAD安全下载_
极速下载...
- CSS现状和如何学习
- 2 ubuntu下geographiclib的使用--经纬度坐标转utm平面坐标及重置ECEF原点
- iOS 蓝牙扫描枪功能
- 计算机哪些方向发展前景,计算机就业的几个方向
- 继昨天的猜拳游戏,升级为老虎机版
- 计算机专业推山西新华电脑学校,青春启航,乘风破浪|山西新华电脑学校2021届毕业典礼完美落幕...
- Latex绘制多个子图,包括标签、布局、图像大小等
热门文章
- MATLAB中计算图像哈希,数字图像处理算法及原理(三):相似图片搜索(平均哈希算法)...
- live2dviewerex动态桌面汉化版
- Android Sdk和安卓各个版本的匹配
- Java基础系列-Collector和Collectors
- ESXi 7.0 Update3 运行一会之后死机
- Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台(实验三)折腾 TFT_eSPI 库
- 如何理解反向传播算法
- php黑名单,PHP 数组黑名单/白名单实例代码详解
- 货车定位服务器维护是什么意思,货车司机停靠服务区休息被驱赶 真相原来是这样的.........
- 中国程序员都不生产代码,只是代码的搬运工?