要在 Perl 中将艺术图像添加到 mp3 文件,我应该使用什么库?示例代码将不胜感激。
问问题
993 次
1 回答
2
使用这个库:
http://metacpan.org/pod/MP3::Tag::ID3v2
#!/usr/local/bin/perl
use MP3::Tag;
use Image::Magick;
$file = “file.mp3″;
$jpg = “file.jpg”;
my $image = new Image::Magick;
if (my $x = $image->Read($jpg)) {
print “Couldn’t read image ‘$jpg’\n”;
}else{
$imagedata = $image->ImageToBlob(magick => jpg);
undef $image;
}
my $mp3 = MP3::Tag->new($file);
$mp3->get_tags();
$mp3->{ID3v2}->remove_tag() if exists $mp3->{ID3v2};
$mp3->{ID3v1}->remove_tag() if exists $mp3->{ID3v1};
my $id3v2 = $mp3->new_tag(“ID3v2″);
$id3v2->add_frame(“TALB”, $album);
$id3v2->add_frame(“TPE1″, $artist);
$id3v2->add_frame(“TIT2″, $title);
$id3v2->add_frame(“APIC”, chr(0×0), ‘image/jpg’, chr(0×0), ‘Cover (front)’, $imagedata);
$id3v2->write_tag();
my $id3v1 = $mp3->new_tag(“ID3v1″);
$id3v1->song($title);
$id3v1->artist($artist);
$id3v1->album($album);
$id3v1->write_tag();
$mp3->close();
有些人报告说它会生成损坏的 mp3,不知道它是否已经修复,但如果没有,请注释掉该行:
$flags = chr(128) if $tag_data =~ s/\xFF(?=[\x00\xE0-\xFF])/\xFF\x00/g;
它会正常工作。
于 2013-06-15T15:21:42.473 回答