taglib:如何编辑专辑艺术家?

时间:2013-05-18 20:47:59

标签: c++ audio mp3 taglib id3

如何修改"专辑艺术家"带有TagLib库的MP3文件的字段? 有类似的东西:

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

1 个答案:

答案 0 :(得分:4)

ID3v2实际上并不支持名为"专辑艺术家"的字段。 iTunes使用TPE2帧,应该是:

  

TPE2
  '乐队/管弦乐队/伴奏' frame用于获取有关录制中表演者的其他信息。

有关完整的框架列表,请参阅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();
}