免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3597 | 回复: 1
打印 上一主题 下一主题

获取mp3文件信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-12 14:09 |只看该作者 |倒序浏览
  1. <?php
  2. /*
  3. ref:
  4. [url]http://everything2.com/e2node/id3v1%2520tag%2520structure[/url]
  5. [url]http://everything2.com/e2node/MP3%2520ID3v1%2520Tag%2520genre%2520mapping[/url]
  6. */

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

  8. $dir = dir($dir_name);

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

  15. function parse_mp3($file_name) {
  16.        
  17.         $info_struct = array (
  18.                         "title"   => array(3,  33, 'trim'),
  19.                         "artist"  => array(33,  63, 'trim'),
  20.                         "album"   => array(63,  93, 'trim'),
  21.                         "year"    => array(93,  97, 'trim'),
  22.                         "comment" => array(97, 126, 'trim'),
  23.                         "genre"   => array(127, 128, 'genre_name')
  24.         );
  25.         $fp = fopen($file_name, "rb") or die("cannot open file!");
  26.         fseek($fp, -128, SEEK_END);
  27.         $mp3_info = array();
  28.         $tag = fread($fp, 3);
  29.         if ($tag == 'TAG') {
  30.                 #fseek($fp, -125, SEEK_END);
  31.                 foreach ($info_struct as $key => $arr) {
  32.                                 fseek($fp, $arr[0] - 128, SEEK_END);
  33.                                 $mp3_info[$key] = call_user_func($arr[2], fread($fp, $arr[1] - $arr[0]));                       
  34.                 }
  35.         }
  36.         fclose($fp);
  37.         return $mp3_info;
  38. }

  39. //file genre name accoding by genre number;
  40. function genre_name($genre) {
  41.         $genre = ord($genre);
  42.         $genre_arr = array (
  43.                 '8'         =>        'Jazz',
  44.                 '10' => 'New Age ',
  45.                 '11' => 'Oldies ',
  46.                 '12' => 'Other',
  47.                 '13' => 'Pop',
  48.                 '14' => 'R&B',
  49.                 '15' => 'Rap',
  50.                 '16' => 'Reggae',
  51.                 '17' => 'Rock'
  52.         );

  53.         if (array_key_exists($genre, $genre_arr)) {
  54.                 return $genre_arr[$genre];
  55.         }
  56.         else {
  57.                 return "Unknow";
  58.         }
  59. }
  60. ?>
复制代码

论坛徽章:
0
2 [报告]
发表于 2008-07-24 16:50 |只看该作者
现在用id3就可以了呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP