博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP之音乐ID3扩展
阅读量:4654 次
发布时间:2019-06-09

本文共 1809 字,大约阅读时间需要 6 分钟。

  不知道你有没有这样的经历,一些从网上下载的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扩展【 .】

 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.代码示例

string(0) ""["artist"]=>string(2) "??"["album"]=>string(0) ""["comment"]=>string(0) ""["genre"]=>int(255)}$version = id3_get_version($filename);echo $version;//1$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);//8$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 )

 

转载于:https://www.cnblogs.com/xiaozong/p/5742741.html

你可能感兴趣的文章
Redis与RabbitMQ作为消息队列的比较
查看>>
mybatis实战教程三:mybatis和springmvc整合
查看>>
Java多线程:Semaphore
查看>>
960栅格化优势
查看>>
LSP原则—关于正方形不是长方形
查看>>
Android内核开发 相关工具及源码下载汇总
查看>>
多线程(二)--NSThread基本使用
查看>>
git command
查看>>
使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍
查看>>
html里 调整字间距
查看>>
RabbitMQ的Vhost,Exchange,Queue原理分析
查看>>
Mac上编写C语言程序
查看>>
251.Flatten 2D Vector
查看>>
WLS Exception: Need to specify class name in environment or system property Solution
查看>>
人见人爱A^B
查看>>
android游戏开发框架libgdx的使用(一)--环境搭建
查看>>
【转】wait_fences: failed to receive reply: 10004003问题的引起原因
查看>>
PE制作实录 —— 定义我的 PE 工具箱
查看>>
C++优先队列的重载(最小堆、最大堆)
查看>>
【读书笔记】理解基本排序算法
查看>>