pyrex-fwi / sapar-id3
该软件包为简单操作ID3标签奠定基础。您可以定义读取器和写入器来操作读取或写入时的元数据。
v5.1.4
2020-05-17 18:11 UTC
Requires
- php: ^7.3
- pyrex-fwi/core-contracts: ^5.1.4
- symfony/console: 4.* || 5.*
- symfony/process: 4.* || 5.*
- symfony/stopwatch: 4.* || 5.*
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpmetrics/phpmetrics: ^2.6
- phpro/grumphp: ^0.18
- phpunit/phpunit: ^9.1
- symfony/var-dumper: ^4.3 | ^5.1
README
支持的id3二进制文件
该软件包为简单ID3标签操作奠定基础。
您可以定义读取器和写入器来操作读取或写入时的元数据。
Mediainfo (>= 17.0) | EyeD3 (>= 0.8) | metaflac (>= 1.3.0) | ffprobe (>= 2.8.14) | exiftool () | lltag () | id3info () | id3tool () | mp3info () | |
---|---|---|---|---|---|---|---|---|---|
Mp3读取 | ✓ | ✓ | 否 | ✓ | |||||
Mp3读取注释 | ✓ | ✓ | - | 否 | |||||
Mp3写入 | 否 | ✓ | 否 | ✓ | |||||
Mp4读取 | ✓ | - | - | - | |||||
Mp4写入 | - | - | - | - | |||||
Flac读取 | ✓ | - | - | - | |||||
Flac写入 | 否 | 否 | - | - | |||||
输出XML | ✓ | 否 | - | ✓ | |||||
输出JSON | ✓ | 否 | - | ✓ |
- '✓', 'no', 'yes' = 已测试
- '-' = 未测试
速度基准测试
二进制读取器 | 100次迭代 | 500次迭代 |
---|---|---|
[metaflac] | 2.249秒 | 11.73秒 |
[Mediainfo] | 5.362秒 | 27.19秒 |
[ffprobe] | 9.716秒 | 48.43秒 |
[EyeD3] | 13.052秒 | 65.423秒 |
用法
读取ID3标签
<?php
class MyClass
{
public function readId3()
{
$mp3OrFlacFile = '/path/to/file';
/** @var Sapar\Id3\Metadata\Id3MetadataInterface */
$id3Metadata = new Sapar\Metadata\Id3Metadata($mp3OrFlacFile);
/** @var Sapar\Wrapper\BinWrapper\BinWrapperInterface */
$mediaInfoWrapper = new Sapar\Wrapper\BinWrapper\MediainfoWrapper();
$mediaInfoWrapper->setBin('/usr/local/bin/mediainfo');
if ($mediaInfoWrapper->read($metaDataFile)) {
$metaDataFile->getTitle();
$metaDataFile->getArtist();
$metaDataFile->getAlbum();
$metaDataFile->getGenre();
$metaDataFile->getYear();
$metaDataFile->getBpm();
$metaDataFile->getTimeDuration();
}
}
}
写入ID3标签
<?php
class MyClass
{
public function writeId3()
{
$mp3OrFlacFile = '/path/to/file';
/** @var Sapar\Id3\Metadata\Id3MetadataInterface */
$id3Metadata = new Sapar\Metadata\Id3Metadata($mp3OrFlacFile);
$id3Metadata->setAlbum('album');
$id3Metadata->setTitle('title');
$id3Metadata->setGenre('genre');
$id3Metadata->setYear(2016);
$id3Metadata->setComment('comment');
$id3Metadata->setBpm(120);
/** @var Sapar\Wrapper\BinWrapper\BinWrapperInterface */
$id3v2wrapper = new Sapar\Wrapper\BinWrapper\Id3v2Wrapper();
$id3v2wrapper->setBin('/usr/local/bin/id3v2');
if ($mediaInfoReader->write($metaDataFile)) {
//it's done!
}
}
创建自定义包装器
<?php
class MyClass
{
}