0

我正在尝试使用 getID3 编写 ETCO 和 TCON id3v2 标签。我有问题。

这是代码

<?php
require_once '/getid3/getid3.php';
$file = '/mp3s/1.mp3';

   $TaggingFormat = 'UTF-8';
    $getID3 = new getID3;
    $getID3->setOption(array('encoding'=>$TaggingFormat));
    require_once('/getid3/write.php');
    $tagwriter = new getid3_writetags;
    $tagwriter->filename = $file;
    $tagwriter->tagformats = array('id3v2.3');
    
// set various options (optional)
$tagwriter->overwrite_tags = true;
$tagwriter->merge_existing_date = true;
$tagwriter->tag_encoding = $TaggingFormat;
$tagwriter->remove_other_tags = false;

// populate data array
$TagData['Artist'][] = 'This Artist';
$TagData['Album'][] = 'This Album';
$TagData['Genre'][] = 'Dance';


$TagData['id3v2']['ETCO'][0] = array(
'frame_flags_raw' => '0', 
'datalength' => '30',
'dataoffset' => '500',
'framenamelong' => 'Event Timing Codes',
'framenameshort' => 'event timing codes',
'timestampformat' => '2'
);


$TagData['id3v2']['TCON'][0] = array(
'frame_flags_raw' => '0', 
'data' => '3',
'datalength' => '4',
'dataoffset' => '55',
'framenameshort' => 'genre'
);


$tagwriter->tag_data = $TagData;

// write tags

if ($tagwriter->WriteTags()) {
    echo 'Successfully wrote tags<br>';
    if (!empty($tagwriter->warnings)) {
        echo 'There were some warnings:<br>'.implode('<br><br>', $tagwriter->warnings);
    }
} else {
    echo 'Failed to write tags!<br>'.implode('<br><br>', $tagwriter->errors);
}


?>

这是我得到的回报......

Failed to write tags!<br>ID3v2: Skipping "ID3V2" because cannot match it to a known ID3v2 frame type<br><br>WriteID3v2() failed with message(s):<pre><ul><li>Invalid Text Encoding in TCON (3) for ID3v2.3</li><li>$this-&gt;GenerateID3v2FrameData() failed for &quot;TCON&quot;</li><li>$this-&gt;GenerateID3v2Tag() failed</li></ul></pre>

关于这类标签的文档非常稀缺。我不知道如何为这些类型的标签构建数组。知道我做错了什么吗?

谢谢!

4

0 回答 0