1

ライブラリ TagLib を使用して MP3 ファイルの「Album Artist」フィールドを変更するにはどうすればよいですか? 次のようなものはありますか:

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

?

4

1 に答える 1

4

ID3v2 は、実際には「アルバム アーティスト」というフィールドをサポートしていません。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();
}
于 2013-05-19T00:37:28.827 に答える