ID3v2

読み:アイディースリー・ヴィートゥー
外語:ID3v2 英語
品詞:固有名詞

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

目次

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.22.3用途
TP1TPE1アーティスト名
TALTALBアルバム名
TYETYER
COMCOMMコメント
TRKTRCKトラック
TCOTCONジャンル
PICAPICアルバム画像

以下、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を付けることもできる。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club