ID3v2
読み:アイディースリー-ヴィートゥー
外語:ID3v2
mp3
ファイルに、曲タイトルやアーティスト名などの付加情報を記録するための
メタデータ
規格の一つ。
目次
概要
特徴
バージョン
対応
機能
対抗
技術
構造
ID3v2ヘッダー
拡張ヘッダー
フレーム
2.2
2.3
フレームID
文字列
MPEGフレーム
ID3v1
概要
ID3
と名が付いているが、それまで使われていたID3とは全く異なる
仕様
である。
元々のID3(以降、ID3v1とする)はファイルの末尾に128バイト固定長の
構造体
を付加しただけであったが、ID3v2はファイルの先頭にチャンク形式のデータを付加している。
このためID3v1とは異なり、対応プレイヤーでなければ肝心の音楽データを再生することすらできないが、現在のプレーヤーの殆どはID3v2に対応している。
特徴
バージョン
現在までに登場したID3v2のバージョンは、次のとおりである。
ID3v2.2.0 (ID3v2 バージョン2.0)
ID3v2.3.0 (ID3v2 バージョン3.0)
ID3v2.4.0 (ID3v2 バージョン4.0)
なお、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ヘッダー
拡張ヘッダー
フレーム×n (複数可能)
パディング
MPEGフレーム(mp3のデータ)
ID3v1
ID3v2ヘッダー
以降、ID3v2ヘッダー内の数値は全てビッグエンディアンである。
+0 ID3v2識別子(3バイト) "ID3"
+3 ID3v2バージョン(2バイト) xx yy (ID3v2.4.0なら、0x04 0x00)
+5 ID3v2フラグ(1バイト)
+6 ID3v2サイズ(4バイト) ([synchsafe] 各バイトの最上位ビットは無効で、4×7ビットで計28ビットとなる)
サイズの表現が特殊で、
synchsafe整数
値である。万が一8ビットを通さない処理系に入ったとしても安全なように配慮したためと思われる。
フラグの機能は次の通り。
ビット7 ‐ 1=非同期化(Unsynchronisation) (通常は0)
ビット6 ‐ 1=拡張ヘッダーあり
ビット5 ‐ 1=実験的なインジケーター(Experimental indicator) (通常は0)
ビット4 ‐ 1=ID3v2フッターあり (ID3v2.4)
ビット3 ‐ 0
ビット2 ‐ 0
ビット1 ‐ 0
ビット0 ‐ 0
ID3v2サイズは、ID3v2ヘッダーのサイズを除く、それ以降の全体長を表わす。
拡張ヘッダー
ID3v2ヘッダー内フラグのビット6=1の場合、拡張ヘッダーが存在する。滅多に使われない。
+0 拡張ヘッダーのサイズ(4バイト) [32ビット整数(2.3)または
synchsafe整数
(2.4)]
+4 拡張フラグ(2バイト)
+6 パディング領域のサイズ(4バイト)
サイズは、ID3v2.3では普通の整数だが、ID3v2.4ではsynchsafe整数であり互換性がない。
拡張フラグの機能は次の通り。
ビット15 ‐ CRCデータあり(CRC data present)
ビット14〜0 ‐ 0 (未定義)
ビット15=1の場合、この後にCRC-32データ4バイトが付加される。
フレーム
ID3v2では、各データはフレームと呼ばれるチャンク形式で格納される。2.2と2.3以降で互換性がない。
2.2
+0 フレームID(3バイト)
+3 フレームサイズ(3バイト) [24ビット整数]
サイズは、実データサイズのみで、フレームヘッダー長は含まない。
2.3
+0 フレームID(4バイト)
+4 フレームサイズ(4バイト) [32ビット整数(2.3)または
synchsafe整数
(2.4)]
+8 フラグ(2バイト)
+10〜 フレームデータ(可変長)
フレーム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.2
2.3
用途
TP1
TPE1
アーティスト名
TAL
TALB
アルバム名
TYE
TYER
年
COM
COMM
コメント
TRK
TRCK
トラック
TCO
TCON
ジャンル
PIC
APIC
アルバム画像
以下、ID3v2.3とID3v2.4の仕様書に存在する全てのフレームIDである(ABC順)。(2.4) はID3v2.4で追加されたものを表わし、(2.3) はID3v2.4で削除されたものを表わす。
AENC Audio encryption
APIC Attached picture
ASPI (2.4) Audio seek point index
COMM Comments
COMR Commercial frame
ENCR Encryption method registration
EQU2 (2.4) Equalisation (2)
EQUA (2.3) Equalization
ETCO Event timing codes
GEOB General encapsulated object
GRID Group identification registration
IPLS Involved people list
LINK Linked information
MCDI Music CD identifier
MLLT MPEG location lookup table
OWNE Ownership frame
PRIV Private frame
PCNT Play counter
POPM Popularimeter
POSS Position synchronisation frame
RBUF Recommended buffer size
RVA2 (2.4) Relative volume adjustment (2)
RVAD (2.3) Relative volume adjustment
RVRB Reverb
SEEK (2.4) Seek frame
SIGN (2.4) Signature frame
SYLT Synchronized lyric/text
SYTC Synchronized tempo codes
TALB Album/Movie/Show title
TBPM beats per minute
TCOM Composer
TCON Content type
TCOP Copyright message
TDAT (2.3) Date
TDEN (2.4) Encoding time
TDLY Playlist delay
TDOR (2.4) Original release time
TDRC (2.4) Recording time
TDRL (2.4) Release time
TDTG (2.4) Tagging time
TENC Encoded by
TEXT Lyricist/Text writer
TFLT File type
TIME (2.3) Time
TIPL (2.4) Involved people list
TIT1 Content group description
TIT2 Title/songname/content description
TIT3 Subtitle/Description refinement
TKEY Initial key
TLAN Language(s)
TLEN Length
TMCL (2.4) Musician credits list
TMED Media type
TMOO (2.4) Mood
TOAL Original album/movie/show title
TOFN Original filename
TOLY Original lyricist(s)/text writer(s)
TOPE Original artist(s)/performer(s)
TORY (2.3) Original release year
TOWN File owner/licensee
TPE1 Lead performer(s)/Soloist(s)
TPE2 Band/orchestra/accompaniment
TPE3 Conductor/performer refinement
TPE4 Interpreted, remixed, or otherwise modified by
TPOS Part of a set
TPRO (2.4) Produced notice
TPUB Publisher
TRCK Track number/Position in set
TRDA (2.3) Recording dates
TRSN Internet radio station name
TRSO Internet radio station owner
TSIZ (2.3) Size
TSOA (2.4) Album sort order
TSOP (2.4) Performer sort order
TSOT (2.4) Title sort order
TSRC ISRC (international standard recording code)
TSSE Software/Hardware and settings used for encoding
TSST (2.4) Set subtitle
TYER (2.3) Year
TXXX User defined text information frame
UFID Unique file identifier
USER Terms of use
USLT Unsychronized lyric/text transcription
WCOM Commercial information
WCOP Copyright/Legal information
WOAF Official audio file webpage
WOAR Official artist/performer webpage
WOAS Official audio source webpage
WORS Official internet radio station homepage
WPAY Payment
WPUB Publishers official webpage
WXXX User defined URL link frame
文字列
フレームのうち、文字列を格納するものは、最初の1バイトでエンコーディングを指定する。
0x00 =
ISO-8859-1
(1バイト単位、末端は 0x00=NUL 文字)
0x01 =
UTF-16
(2バイト単位、
BOM
あり、末端は 0x00 0x00 の2バイト)
0x02 =
UTF-16BE
(2バイト単位、BOMなし、末端は 0x00 0x00 の2バイト、ID3v2.4で対応)
0x03 =
UTF-8
(1バイト単位、末端は 0x00=NUL 文字、ID3v2.4で対応)
このバイトに続いて実際の文字列が格納される。各符号におけるNUL末端で終端できるが、フレームヘッダーで長さは明確なので、NULは書かなくてもよい。
日本国内向けの古いソフトウェアは、エンコーディング=0x00 として
シフトJIS
を格納するものが多く見られたが、これはフォーマット違反である。
MPEGフレーム
ID3v2の直後に、実際のMPEGフレームが続く。MPEGフレームは、0xFF 0xFB から始まる。
ID3v1
ID3v2とID3v1は併用可能なため、必要に応じて末尾にID3v1を付けることもできる。
再検索