不知道你有没有这样的经历,一些从网上下载的MP3音乐,文件名明明是01、02这样的序号,但播放时却能显示出歌曲的正确名称来,是不是有点奇妙?

这其实都是ID3在暗中相助

  ID3,一般是位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息,ID3信息分为两个版本,v1和v2版。 其中:v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息。 v2版一般位于mp3的开头,可以存储歌词,该专辑的图片等大容量的信息。

  好了,背景就介绍到这里


PHP的ID3扩展是由PECL提供的,主要用途由,获取和设置mp3音频文件的ID3信息,包括该mp3的歌手,标题,专辑名称,年代,风格,备注

1.安装ID3扩展【 http://pecl.php.net/package/id3.】

 wget http://pecl.php.net/get/id3-0.2.tgz

 tar zxvf id3-0.2.tgz

cd id3-0.2.tgz

 ./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

 ps:我这边make的时候报错了,id3.c:196:1: error: unknown type name 'function_entry',解决办法,id3.c文件的196行的function_entry改成zend_function_entry就可以了

然后在php.ini中添加编译好的扩展文件id3.so

重启服务,在phpinfo中可以看到id3扩展信息

2.函数使用

  首先我们找一个mp3资源

id3扩展一共提供9个函数

id3_​get_​frame_​long_​name //不研究

id3_​get_​frame_​short_​name //不研究

id3_​get_​genre_​id(genre_name)  //通过风格名称获取风格id

id3_​get_​genre_​list(void) //列出所有的风格键值对照表

id3_​get_​genre_​name(genre_id) //通过风格id获取风格名称

id3_​get_​tag(filename) //获取mp3的tag信息

id3_​get_​version(void) //获取id3扩展版本号

id3_​remove_​tag(filename) //删除mp3的tag信息

id3_​set_​tag(filename,tags) //设置mp3的tag信息

3.代码示例

<?php
$filename = '4007108962.mp3'; $tag = id3_get_tag($filename);
var_dump($tag);
//array(5){["title"]=>string(0) ""["artist"]=>string(2) "??"["album"]=>string(0) ""["comment"]=>string(0) ""["genre"]=>int(255)} $version = id3_get_version($filename);
echo $version;
// $tags = array('title'=>'标题','artist'=>'作者','album'=>'专辑','year'=>'2016','genre'=>8,'comment'=>'评论,最多30个字节');
$set = id3_set_tag($filename,$tags);
var_dump($set);
//true $genre_name = id3_get_genre_name($tag['genre']);
var_dump($genre_name);
//Jazz $genre_id = id3_get_genre_id('Jazz');
var_dump($genre_id);
// $remove = id3_remove_tag($filename);
var_dump($remove);
//true $list = id3_get_genre_list();
var_dump($list);
//Array([0] => Blues [1] => Classic Rock[2] => Country [3] => Dance .......[147] => SynthPop )

PHP之音乐ID3扩展的更多相关文章

  1. 音乐ID3 中 专辑封面解析(APIC帧)

    ID3V2 中 APIC 帧标识 专辑封面.前几天 百度 谷歌 都没有找到具体的说明.有点小伤人. 最好参考  Android 中的 id3.cpp 以及一个java 开源 id3 库.找到这里的规格 ...

  2. 利用 Windows API Code Pack 修改音乐的 ID3 信息

    朋友由于抠门 SD 卡买小了,结果音乐太多放不下,又不舍得再买新卡,不得已决定重新转码,把音乐码率压低一点,牺牲点音质来换空间(用某些人的话说,反正不是搞音乐的,听不出差别)… 结果千千静听(百度音乐 ...

  3. Simofox 2.7 - 基于 pcxFirefox 定制(停更)

    ••• 现已停止更新,无良作者转战 Google Chrome ••• 项目名称:Simofox (Simple + Cool + Firefox) 项目介绍:Simofox 中译名西蒙狐,目前项目版 ...

  4. 月半小夜曲下的畅想--DOCTYPE模式

    月半小夜曲下的畅想--DOCTYPE模式 @(css3 box-sizing)[doctype声明|quirks模式|妙瞳] DOCTYPE文档类型标签,该标签是将特定的标准通用标记语言或者XML文档 ...

  5. 音频播放(iOS开发)

    音频处理 一.录音 录音应用场景 语音聊天 即时通讯软件中,都包含语音发送功能 语音备忘录 录一段音频,来记录某件事情 录音功能实现 导入AVFoundation框架 作用:一些多媒体的处理,基本上都 ...

  6. 关于Google Chrome的使用小技巧!

    1 1 http://www.runoob.com/w3cnote/chrome-skip.html Chrome是Google公司开发的一个现代化的网页浏览器,作为三大浏览器之一 它搭载了被称为V8 ...

  7. mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等

    mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...

  8. iOS开发系列--扩展--播放音乐库中的音乐

    众所周知音乐是iOS的重要组成播放,无论是iPod.iTouch.iPhone还是iPad都可以在iTunes购买音乐或添加本地音乐到音乐 库中同步到你的iOS设备.在MediaPlayer.fram ...

  9. Plex音乐名称乱码原因id3版本

    标签编码支持情况: ID3v1:ISO-8859-1ID3v2 2.3:ISO-8859-1.UTF-16ID3v2 2.4:ISO-8859-1.UTF-16.UTF-8APEv2:UTF-8 修改 ...

随机推荐

  1. Unity3d中Dictionary和KeyValuePair的使用

    using UnityEngine; using System.Collections; using System.Collections.Generic;public class test : Mo ...

  2. 拔高课程_day14_课堂笔记

    今日大纲 Redis的持久化 Redis的主从 Redis的集群 mysql 优化 tomcat优化 Redis的持久化 持久化 持久化,就是将数据保存到磁盘,机器宕机或者重启数据不丢失,如果存储到内 ...

  3. 辽宁OI2016夏令营模拟T3-chess

    放棋子(chess.pas/c/cpp)题目大意现在有一个 n*m 的棋盘,现在你需要在棋盘上摆放 2n 个棋子,要求满足如下条件:1. 每一列只能有一个棋子:2. 每一行的前 xi 个格子有一个棋子 ...

  4. Hadoop查看目录文件大小的脚本

    hadoop fs -du / | awk '{ sum=$1 ;dir2=$3 ; hum[1024**3]="Gb";hum[1024**2]="Mb";h ...

  5. 第五十六节,python实现支持并发、断点续传的Ftp程序

    一.要求 1.用户md5认证 2.支持多用户同时登陆(并发) 3.进入用户的命令行模式,支持cd切换目录,ls查看目录子文件 4.执行命令(ipconfig) 5.传输文件: a.支持断点续传 b.传 ...

  6. 【LeetCode】434. Number of Segments in a String

    Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...

  7. hdu_5925_Coconuts(离散化+dfs)

    题目链接:hdu_5925_Coconuts 题意: 给你一张很大的图,和小于200个的障碍点,问这张图中的联通块有多少个 题解: 由于障碍点只有200个,所以肯定有很多的空白部分,我们将这些空白部分 ...

  8. 2.Math对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. DOS/VBS - 用 bat 批处理 实现自动telnet

    一.VBS法 1. 建立一个tel.vbs脚本 '建立Shell对象 set sh=WScript.CreateObject("WScript.Shell") WScript.Sl ...

  10. MAC img 安装 mysql 修改密码

    参考 : http://tieba.baidu.com/p/3042628829 step1: 苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop ...