pyrex-fwi/sapar-id3

该软件包为简单操作ID3标签奠定基础。您可以定义读取器和写入器来操作读取或写入时的元数据。

v5.1.4 2020-05-17 18:11 UTC

README

pipeline status coverage report Software License

PHPUnit代码覆盖率 Phpmetrics

支持的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
{

}

测试

显示文档 版本发布