一个读取的程序。其实稍作改动,就可以变成读写的(id3v1),id3v2复杂的多,以后看情况再写吧。
$file=”回到我身边.mp3″; //要读取的文件–俺偶像的
$mp3info=readmp3($file); //获得文件信息,数组
print_r($mp3info); //输出数组
function readmp3($mp3_file)
{
$fp=fopen($mp3_file,”rb”); //读取mp3文件
//首先判断是否有TAG,如果没有,那就没必要读取了,方法就是读取倒数128-126字节,看是否是TAG
//详情参看http://www.readlog.cn/archives/2961/
fseek($fp,-128,SEEK_END); //指针移到倒数128字节处
$tag=fread($fp,3); //读取倒数128-126字节位置的数据
if($tag==”TAG”) //如果这3个字节是TAG,表明有TAG
{
$mp3=array();
//标题30个字节,从倒数125字节到倒数96字节
//现在直接读就可以了
$mp3[‘标题’]=fread($fp,30);
//艺术家30个字节,从倒数95字节到66字节
$mp3[‘艺术家’]=fread($fp,30);
//专辑30个字节,从倒数65字节到36字节
$mp3[‘专辑’]=fread($fp,30);
//年份4个字节,从倒数35字节到32字节
$mp3[‘年份’]=fread($fp,4);
//注释28个字节,从倒数31字节到4字节 (有的是30个字节,那就把倒数第2,3位归入注释了)
$mp3[‘注释’]=fread($fp,28);
fseek($fp,1,SEEK_CUR); //跳过倒数第3位保留位
//第几首1个字节,倒数第2位
$mp3[‘编号’]=ord(fread($fp,1));
//流派1个字节,就是倒数第一个字节了
//流派这里是存放的整型数据,可以写个函数来把数字变成具体的文字。
//具体含义参看http://www.readlog.cn/archives/2961/
$mp3[‘流派’]=ord(fread($fp,1));
return $mp3;
}
}
?>
这篇博客介绍了一个简单的PHP程序,用于读取MP3文件中的ID3v1标签信息,包括标题、艺术家、专辑、年份、注释和流派。通过fopen和fread函数操作文件,检查倒数128字节判断是否存在TAG,并从中提取相关元数据。虽然没有实现ID3v2标签的读取,但提供了ID3v1标签解析的基础方法。

837

被折叠的 条评论
为什么被折叠?



