davaxi/mp3info

提取mp3标签和元信息的最快PHP库。

0.0.8 2022-05-14 08:18 UTC

This package is auto-updated.

Last update: 2024-09-14 13:10:22 UTC


README

获取mp3标签和元信息的最快PHP库。

Latest Stable Version Total Downloads Latest Unstable Version License

此类从mpeg/mp3音频中提取信息。

  • 音频信息
    • 时长
    • 比特率
    • 采样率
    • 通道模式
    • 编解码器和层版本
    • 帧数
  • 音频封面(封面)
  • 音频标签

内容

  1. 用法
  2. 性能
  3. 控制台扫描器
  4. API
    • 音频信息
    • 类方法
  5. 技术信息

用法

在用文件名作为构造函数的第一个参数创建 Mp3Info 实例后,您可以通过以下列表中的对象属性检索数据。

use davaxi\Mp3Info\Mp3Info;
// To get basic audio information
$audio = new Mp3Info('./audio.mp3');

// If you need parse tags, you should set 2nd argument this way:
$audio = new Mp3Info('./audio.mp3', true);

然后访问对象属性以获取音频信息

echo 'Audio duration: '.floor($audio->duration / 60).' min '.floor($audio->duration % 60).' sec'.PHP_EOL;
echo 'Audio bitrate: '.($audio->bitRate / 1000).' kb/s'.PHP_EOL;
// and so on ...

要访问id3v1标签,请使用 $tags1 属性。要访问id3v2标签,请使用 $tags2 属性。您还可以使用标签的合并列表 $tags,其中id3v2和id3v1标签与id3v1键合并。

// simple id3v1 tags
echo 'Song '.$audio->tags1['song'].' from '.$audio->tags1['artist'].PHP_EOL;
// specific id3v2 tags
echo 'Song '.$audio->tags2['TIT2'].' from '.$audio->tags2['TPE1'].PHP_EOL;

// combined tags (simplies way to get as more information as possible)
echo 'Song '.$audio->tags['song'].' from '.$audio->tags['artist'].PHP_EOL;

性能

  • 通常它可以在不到0.001秒的时间内解析大约6-7MB大小的mp3文件。
  • 112个文件列表,具有恒定和可变比特率,总时长为5:22:28,在1.76秒内解析。与完全相同的mp3列表相比,getId3库运行速度慢8-10倍——9.9秒。
  • 如果您想比较,有一个非常简单的方法。只需安装 nass600/get-id3 包,并对包含音频的任何文件夹运行控制台扫描器。它将打印出Mp3Info花费的时间和getId3的时间。

控制台扫描器

要测试Mp3Info,您可以使用内置的脚本,该脚本扫描目录并分析其中所有的mp3文件。要针对当前目录运行脚本

php bin/scan ./

API

音频信息

类方法

  • $audio = new Mp3Info($filename, $parseTags = false) 创建新的对象实例并开始解析。如果需要解析音频标签(id3v1和id3v2),则将 true 作为第二个参数传递。

  • $audio->getCover() 返回与音频图像捆绑的原始内容。

  • Mp3Info::isValidAudio($filename) 是一个静态方法,用于检查文件 $filename 是否看起来像mp3文件。如果文件看起来像mp3,则返回 true,否则返回false。

技术信息

支持的功能

  • id3v1
  • id3v2.3.0, id3v2.4.0
  • CBR,可变比特率(VBR)

使用源