ID3v2 フレーム ヘッダ

2011年3月14日 0

フレームは、ID3v2 のタグ情報におけるデータ本体となる。フレームはヘッダと本体で構成されている。ヘッダの内容は以下のようになる。

バイト 0 1 2 3 4 5 6 7 8 9
v2.2 フレーム ID サイズ 未使用
v2.3 フレーム ID サイズ フラグ 圧縮前のサイズ 暗号方法 グループ
v2.4 フレーム ID サイズ フラグ グループ 暗号方法 データ長指定子

フレーム ID はデータの識別子となる A ~ Z、0 ~ 9 で構成される文字列である。”X”、”Y”、”Z” ではじまる ID は、ID3v2 ヘッダで実験中フラグが無効でも、常に実験用となる。

サイズはヘッダ部分を除く、フレームのバイト数となる。ヘッダは v2.2 なら 6、v2.3 ~ 2.4 なら 10 バイトなので、フレーム全体からこれを差し引いた大きさとなる。フレームが圧縮・暗号・非同期化されている場合は、それらを処理した後のサイズとなる。フラグの内容によってはヘッダの後に付加情報が追加される。

フラグは v2.3 から追加された仕様で 2 バイトの値となる。1 バイト目が状態フラグ、2 バイト目は v2.3 ならエンコードフラグ、v2.4 はフォーマットフラグとして定義される。

状態フラグの内容は以下。ビット配置は v2.3 ならば %abc00000、v2.4 の場合は %0abc0000 となる。

フラグ 内容
a タグ変更による削除 0 何もしない
1 タグが変更されたとき、現在のフレームを削除する
b ファイル変更による削除 0 何もしない
1 ファイル ( タグ以外の領域 ) が変更されたとき、現在のフレームを削除する
c 読み取り専用 0 フレームの編集をおこなってもよい
1 読み取り専用

v2.3 の エンコードフラグの内容は以下。ビット配置は %ijk00000 となる。

フラグ 内容
i 圧縮 0 圧縮なし
1 フレームが圧縮されており、ヘッダ末尾に元のサイズ ( 4 バイト ) が指定されている
j 暗号化 0 暗号化なし
1 フレームが暗号化されており、ヘッダ末尾にその方法 ( 1 バイト ) が指定されている
k グループ化 0 グループ情報なし
1 グループ化されており、ヘッダの末尾に識別子 ( 1 バイト ) が指定されている

v2.4 の フォーマットフラグの内容は以下。ビット配置は %0h00kmnp となる。

フラグ 内容
h グループ化 0 グループ情報なし
1 グループ化されており、ヘッダの末尾に識別子 ( 1 バイト ) が指定されている
k 圧縮 0 圧縮なし
1 フレームが圧縮されており、ヘッダ末尾に元のサイズ ( 4 バイト ) が指定されている
m 暗号化 0 暗号化なし
1 フレームが暗号化されており、ヘッダ末尾にその方法 ( 1 バイト ) が指定されている
n 非同期化 0 非同期化なし
1 フレームが非同期化されている
p データ長指定子 0 データ長指定子なし
1 データ長指定子がヘッダ ( フレーム? ) 末尾に指定されている。