ID3v2
読み:アイディースリー-ヴィートゥー
外語:ID3v2

 mp3ファイルに、曲タイトルやアーティスト名などの付加情報を記録するためのメタデータ規格の一つ。
目次

概要
 ID3と名が付いているが、それまで使われていたID3とは全く異なる仕様である。
 元々のID3(以降、ID3v1とする)はファイルの末尾に128バイト固定長の構造体を付加しただけであったが、ID3v2はファイルの先頭にチャンク形式のデータを付加している。
 このためID3v1とは異なり、対応プレイヤーでなければ肝心の音楽データを再生することすらできないが、現在のプレーヤーの殆どはID3v2に対応している。

特徴

バージョン
 現在までに登場したID3v2のバージョンは、次のとおりである。
 なお、ID3v2.2と、ID3v2.3/ID3v2.4の間には、何一つ互換性がない。その上、ID3v2.3とID3v2.4の間にさえ、非互換な仕様差がある。仕様書において、バージョン間の互換性は保証されない旨記載があり、このように後方互換を一切考慮していないため、新バージョンが登場するたびに新規に対応する必要が生じる。
 なお、バージョンの考え方は、ID3v2のバージョン2や3や4であって、ID3のバージョン2.2や2.3や2.4などではない、とする論説もある。実際、ID3v2のメタデータ内に記載されるのは3や4といった値のみであるが、しかしID3v2の公式サイトには「ID3 version 2.3」や「version, 2.4」という記述があるため、以前は不明だが、現在ではID3のバージョン2.3などと考えても差し支えはないと思われる。

対応
 Windows Media PlayerはID3v2.3に対応し、長くv2.4に対応していなかったが、どうやらWindows Media Player 12 からID3v2.4にも対応したようである。
 iTunesは以前はID3v2.2、現在はID3v2.4に対応しているようである。

機能
 ID3v1の問題だった文字数の制限を撤廃し、更に様々な情報の付加を可能とした。
 Unicodeに対応し、画像や歌詞情報などの格納も可能となっている。

対抗
 同様の拡張として、ID3v2とは別に日本のYunasoftが提唱したrmp(RIFF MP3)というものもある。
 rmpはRIFF形式にした仕様だったが、デジュリスタンダードを目指したID3v2には普及数では勝てず、対応するソフトウェアはあまり存在しない。日本製のソフトウェアでは、双方に対応するものもある。
 なお、ID3v1とIDv2、あるいはID3v1とrmpは共存できるが、ID3v2とrmpは共存できない。

技術

構造
 ID3v1のメタデータは末尾だったが、ID3v2は先頭に情報が付加される。
 全体として、概ね次の順序でデータは格納される。

ID3v2ヘッダー
 以降、ID3v2ヘッダー内の数値は全てビッグエンディアンである。
 サイズの表現が特殊で、synchsafe整数値である。万が一8ビットを通さない処理系に入ったとしても安全なように配慮したためと思われる。
 フラグの機能は次の通り。
 ID3v2サイズは、ID3v2ヘッダーのサイズを除く、それ以降の全体長を表わす。

拡張ヘッダー
 ID3v2ヘッダー内フラグのビット6=1の場合、拡張ヘッダーが存在する。滅多に使われない。
 サイズは、ID3v2.3では普通の整数だが、ID3v2.4ではsynchsafe整数であり互換性がない。
 拡張フラグの機能は次の通り。
 ビット15=1の場合、この後にCRC-32データ4バイトが付加される。

フレーム
 ID3v2では、各データはフレームと呼ばれるチャンク形式で格納される。2.2と2.3以降で互換性がない。

2.2
 サイズは、実データサイズのみで、フレームヘッダー長は含まない。

2.3
 フレームIDはASCIIで大文字のA‐Zと0‐9の文字を用いて命名する。ただし先頭の文字がX/Y/Zは、特殊な用途に使う。
 サイズは、実データサイズのみで、フレームヘッダー長は含まない。ID3v2.3では普通の整数だが、ID3v2.4ではsynchsafe整数であり互換性がない。

フレームID
 よく使われるフレームIDは次の通り。ID3v2.2は3バイト、ID3v2.3(ID3v2.4も同じ)は4バイトである。
2.22.3用途
TP1TPE1アーティスト名
TALTALBアルバム名
TYETYER
COMCOMMコメント
TRKTRCKトラック
TCOTCONジャンル
PICAPICアルバム画像
 以下、ID3v2.3とID3v2.4の仕様書に存在する全てのフレームIDである(ABC順)。(2.4) はID3v2.4で追加されたものを表わし、(2.3) はID3v2.4で削除されたものを表わす。

文字列
 フレームのうち、文字列を格納するものは、最初の1バイトでエンコーディングを指定する。
 このバイトに続いて実際の文字列が格納される。各符号におけるNUL末端で終端できるが、フレームヘッダーで長さは明確なので、NULは書かなくてもよい。
 日本国内向けの古いソフトウェアは、エンコーディング=0x00 としてシフトJISを格納するものが多く見られたが、これはフォーマット違反である。

MPEGフレーム
 ID3v2の直後に、実際のMPEGフレームが続く。MPEGフレームは、0xFF 0xFB から始まる。

ID3v1
 ID3v2とID3v1は併用可能なため、必要に応じて末尾にID3v1を付けることもできる。

再検索