- 论坛徽章:
- 0
|
- <?php
- /*
- ref:
- [url]http://everything2.com/e2node/id3v1%2520tag%2520structure[/url]
- [url]http://everything2.com/e2node/MP3%2520ID3v1%2520Tag%2520genre%2520mapping[/url]
- */
- $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";
- }
- }
- ?>
复制代码 |
|