# php读取mp3文件信息 (转)

- URL: https://wuming.si/blog/474/
- Author: Aaron
- Published: 2014-01-16
- Language: zh-Hans
- Categories: Technology
- Originally published at: https://blog.wo.ai/archives/474

一个读取的程序。其实稍作改动，就可以变成读写的（id3v1)，id3v2复杂的多，以后看情况再写吧。  
<?php  
$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;  
}  
}  
?>
