taglib:如何编辑专辑艺术家

taglib : how to edit Album Artist?

本文关键字:编辑 专辑 艺术家 何编辑 taglib      更新时间:2023-10-16

如何使用库TagLib修改MP3文件的"Album Artist"字段?有没有类似的:

f.tag()->setArtist("blabla");

?

ID3v2实际上不支持名为"album artist"的字段。iTunes使用TPE2帧,它应该是:

TPE2
"乐队/管弦乐队/伴奏"框架用于记录表演者的附加信息。

完整的框架列表见http://id3.org/id3v2.3.0#Declared_ID3v2_frames。

要用TagLib编写,可以这样做:

#include <mpegfile.h>
#include <id3v2tag.h>
#include <textidentificationframe.h>
int main()
{
    TagLib::MPEG::File file("foo.mp3");
    TagLib::ByteVector handle = "TPE2";
    TagLib::String value = "bar";
    TagLib::ID3v2::Tag *tag = file.ID3v2Tag(true);
    if(!tag->frameList(handle).isEmpty())
    {
        tag->frameList(handle).front()->setText(value);
    }
    else
    {
        TagLib::ID3v2::TextIdentificationFrame *frame =
            new TagLib::ID3v2::TextIdentificationFrame(handle, TagLib::String::UTF8);
        tag->addFrame(frame);
        frame->setText(value);
    }
    file.save();
    return 0;
}

如果你只是想删除帧,你可以简单地做:

TagLib::MPEG::File file("foo.mp3");
TagLib::ID3v2::Tag *tag = file.ID3v2Tag();
if(tag)
{
    tag->removeFrames("TPE2");
    file.save();
}