ChinaUnix首页 > 精华文章 > Php > 正文

[精彩] 获取mp3文件信息


http://www.chinaunix.net 作者:redskywy  发表于:2008-07-24 16:50:52
发表评论】 【查看原文】 【Php讨论区】【关闭

<?php

/*
ref:
http://everything2.com/e2node/id3v1%2520tag%2520structure
http://everything2.com/e2node/MP3%2520ID3v1%2520Tag%2520genre%2520mapping
*/

$dir_name = "G:\\mp3\\";

$dir = dir($dir_name);

while ($f = $dir->read()) {
if (preg_match('/\.mp3$/i', $f)) {
$info = parse_mp3($f);
print_r($info);
}
}

function parse_mp3($file_name) {

$info_struct = array (
"title"   => array(3,  33, 'trim'),
"artist"  => array(33,  63, 'trim'),
"album"   => array(63,  93, 'trim'),
"year"    => array(93,  97, 'trim'),
"comment" => array(97, 126, 'trim'),
"genre"   => array(127, 128, 'genre_name')
);
$fp = fopen($file_name, "rb") or die("cannot open file!");
fseek($fp, -128, SEEK_END);
$mp3_info = array();
$tag = fread($fp, 3);
if ($tag == 'TAG') {
#fseek($fp, -125, SEEK_END);
foreach ($info_struct as $key => $arr) {
fseek($fp, $arr[0] - 128, SEEK_END);
$mp3_info[$key] = call_user_func($arr[2], fread($fp, $arr[1] - $arr[0]));
}
}
fclose($fp);
return $mp3_info;
}

//file genre name accoding by genre number;
function genre_name($genre) {
$genre = ord($genre);
$genre_arr = array (
'8'  => 'Jazz',
'10' => 'New Age ',
'11' => 'Oldies ',
'12' => 'Other',
'13' => 'Pop',
'14' => 'R&B',
'15' => 'Rap',
'16' => 'Reggae',
'17' => 'Rock'
);

if (array_key_exists($genre, $genre_arr)) {
return $genre_arr[$genre];
}
else {
return "Unknow";
}
}
?>




 netstu 回复于:2008-07-24 16:50:52

现在用id3就可以了呀




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=1196466
转载请注明作者名及原文出处