davaxi / mp3info
提取mp3标签和元信息的最快PHP库。
0.0.8
2022-05-14 08:18 UTC
Requires
- php: >=5.4.0
- ext-mbstring: *
Requires (Dev)
- wapmorgan/terminal-info: dev-master
README
获取mp3标签和元信息的最快PHP库。
此类从mpeg/mp3音频中提取信息。
- 音频信息
- 时长
- 比特率
- 采样率
- 通道模式
- 编解码器和层版本
- 帧数
- 音频封面(封面)
- 音频标签
内容
用法
在用文件名作为构造函数的第一个参数创建 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)
使用源