首页 - 币安资讯 > 获取mp3信息(如何获取mp3音乐地址)

获取mp3信息(如何获取mp3音乐地址)

发布于:2022-12-10 作者:沫沫 阅读:7

今天给各位分享获取mp3信息的知识,其中也会对如何获取mp3音乐地址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Delphi中如何读取出MP3文件的信息

先用WINAMP将一首MP3的信息写好,然后用一个16进制编辑器(UltraEdit)打开这个MP3文件,留意比较文件最后的一段字节,你就知道了该怎么处理这些信息(具体地位我记不清跋扈)

C#中如何获取.mp3文件的歌手名以及其它相关信息?

当我们用winamp软件听音乐时,播放清单就自动将这些信息读出来。大部分人都喜欢从网上下载音乐,但下载下来的MP3文件名都是文件上传系统自动取名的

下面以C#为工具,把开发过程写出来。

一首MP3的额外信息存放在文件的最后面,共占128个字节,其中包括以下的内容(我们定义一个结构说明):

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;//保留位,一个字节

}所以,我们只要把MP3文件的最后128个字节分段读出来并保存到该结构里就可以了。函数定义如下:

///

/// 获取MP3文件最后128个字节

///

///

/// 返回字节数组

private byte[] getLast128(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;

}再对上面返回的字节数组分段取出,并保存到Mp3Info结构中返回。

///

/// 获取MP3歌曲的相关信息

///

///

/// 返回一个Mp3Info结构

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

{

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

{

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

{

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

{

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

{

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

{

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;

}

上面程序用到下面的方法:

///

/// 将字节数组转换成字符串

///

///

/// 返回转换后的字符串

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;

}改名怎么办呢?我们按(演唱者)歌名 的格式对歌曲进行改名,程序如下:

///

/// 更改文件名

///

///

///

private bool ReName(string filePath)

{

if(File.Exists(filePath))

{

Mp3Info mp3Info = new Mp3Info();

mp3Info = this.getMp3Info(this.getLast128(filePath));//读出文件信息

mp3Info.Artist = this.DeleteNotValue(mp3Info.Artist);

mp3Info.Title = this.DeleteNotValue(mp3Info.Title);

if(mp3Info.Artist.Trim().Length==0)

{

mp3Info.Artist="未命名";

}

if(mp3Info.Title.Trim().Length==0)

{

mp3Info.Title="未知名歌曲";

}

try

{

//更名

File.Move(filePath,filePath.Substring(0,filePath.ToLower().LastIndexOf("\\")).Trim() + "\\" + "(" + mp3Info.Artist.Trim() + ")" +mp3Info.Title.Trim() + ".mp3");

return true;

}

catch(Exception)

{

return false;

}

}

else

{

return false;

}

}

如何用php提取mp3文件里的信息

在提取信息的之前,要先把指定目录下的mp3文件找出来,下面是提取mp3文件的代码片段:

$thisdir=dir(".");

while($file=$thisdir-read()) {

if((!is_dir("./$file")) and ($file!=".") and ($file!=".."))

{

$mp3=strstr($file,".");

if($mp3==".mp3"){

echo "

$file

";

echo " ";

}

}

这段代码可以把指定目录下的mp3文件显示出来(改例的保存文件的目录)。

下一步就是在提取出来的mp3文件中的信息再提取出来,下面是程序片段:

$fp=fopen($file,"r");

$content=fread($fp,filesize($file));

$content=strstr($content,"TAG");

echo "$content";

由于信息是以TAG字符串开头的,所以就用strstr函数找第一个出现的tag标记,然后把后面的字符串显示出来,这就是mp3文件中的信息了,当然,这些信息很乱,你可以用字符串函数把提取出来的信息在分析处理一下,得到有用的信息。

ASP如何读取MP3文件的信息比特率歌曲名称歌手,采样频率,播放时间

代码我不知道,但可以肯定的是有两种方法

1、有特殊的组件,调用组件来获取

2、用FSO功能

------------

MP3中的歌手等信息会有特殊的头代码,用FSO来读取这个代码就可获取

像现在的一些拍客网站都会显示照片是用什么像机拍摄、光圈、速度等信息

这些都是用这方法做的

你可以用Ultraedit-32打开一个MP3看一下,它里面就会有你所需要的信息

用FSO功能就可以做到

能否从mp3文件,获取歌手,专辑等信息

mp3文件格式具备存储以上信息功能。

但从文件能否成功获取,要看之前是否存入了信息。

没存就获取不了了。

获取mp3信息的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何获取mp3音乐地址、获取mp3信息的信息别忘了在本站进行查找喔。

二维码

扫一扫关注我们

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签: #获取mp3信息

相关文章

发表评论