wapmorgan / mp3info
提取 mp3 标签和元信息的最快 PHP 库。
0.1.0
2023-05-28 18:37 UTC
Requires
- php: >=5.4.0
- ext-mbstring: *
README
获取 mp3 标签和元信息的最快 PHP 库。
该类可以从 mpeg/mp3 音频中提取信息
- 音频信息
- 时长
- 比特率
- 采样率
- 通道模式
- 编解码器和层版本
- 帧数
- 音频图像(封面)
- 音频标签
内容
用法
在创建 Mp3Info
实例后,将文件名作为构造函数的第一个参数传递,您可以从以下列出的对象属性中检索数据。
use wapmorgan\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-7 MB 大小的 mp3 文件。
- 112 个文件列表,具有恒定和可变比特率,总时长为 5:22:28,在 1.76 秒内解析。与完全相同的 mp3 列表相比,getId3 库的速度慢 8x-10x - 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
。
设置
您可以在实例化对象之前调整一些变量以重新配置
Mp3Info::$headerSeekLimit
- 搜索第一个 mpeg 头的字节数。默认值:2048
(字节)。Mp3Info::$framesCountRead
- 在计算音频时长之前要读取的 mpeg 帧数。默认值:2
(帧)。
技术信息
支持的功能
- id3v1
- id3v2.3.0, id3v2.4.0
- CBR,可变比特率(VBR)
使用的源