我正在尝试使用 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->GenerateID3v2FrameData() failed for "TCON"</li><li>$this->GenerateID3v2Tag() failed</li></ul></pre>
关于这类标签的文档非常稀缺。我不知道如何为这些类型的标签构建数组。知道我做错了什么吗?
谢谢!