zoukankan      html  css  js  c++  java
  • PHP之音乐ID3扩展

      不知道你有没有这样的经历,一些从网上下载的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;
    //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 )
  • 相关阅读:
    Vue使用watch监听一个对象中的属性
    小程序 显示对话框 确定-取消
    【微信小程序】 wx:if 与 hidden(隐藏元素)区别
    vue项目移植tinymce踩坑
    XMLHttpRequest.withCredentials 解决跨域请求头无Cookie的问题
    appJSON["window"]["navigationBarTextStyle"] 字段需为 black 或 white
    Java写 插入 选择 冒泡 快排
    编码表理解
    Centos yum安装java jdk1.8
    Java Hibernate和.Net EntityFramework 如何在提交事务之前 就拿到需要新增实体的Id
  • 原文地址:https://www.cnblogs.com/xiaozong/p/5742741.html
Copyright © 2011-2022 走看看