MP3 (MPEG Audio Layer 3)

ビットレート (bitrate)

ビットレート データ量
CBR (Constant Bit Rate) 固定
VBR (Variable Bit Rate) 可変
ABR (Average Bit Rate) 平均

チャンネル

Multichannel - Hydrogenaudio Knowledgebase

ジョイントステレオ (Joint stereo)

複数のステレオ符号化方式がサポートされる形式です。Joint stereo - Hydrogenaudio Knowledgebase

  • SS ("simple" or "L/R" stereo or DualMono)
  • MS ("mid-side" stereo)
  • IS ("intensity" stereo)

タグ (tags)

タグの規格

  • ID3v1 … ファイルの末尾に、128Bの固定サイズで配置。文字コードの規定なし
  • ID3v2 … ファイルの先頭に、最大256MBの可変サイズで配置。
    • v2.2 … v2.3とv2.4の元。すでに使用されていない id3v2-00 - ID3.org
    • v2.3 … 文字コードは、ISO-8859-1・BOM付のUTF-16のいずれか
    • v2.4 … 文字コードは、ISO-8859-1・BOM付のUTF-16・BOMなしのUTF-16BE・UTF-8のいずれか
  • APEv1 … (Monkey's Audio)
  • APEv2

ID3v1

ID3v1
フィールド バイト数 説明
head 3 つねに"TAG"
title 30  
artist 30  
album 30  
year 4 4桁の年
comment 30  
genre 1 ジャンル リストのインデックス
ID3v1.1
フィールド バイト数 説明
head 3 つねに"TAG"
title 30  
artist 30  
album 30  
year 4 4桁の年
comment 28  
null 1 つねに0とすることで、ID3v1と区別する
track 1 アルバムのトラック番号。ただし直前のバイトが0でなければ無効
genre 1 ジャンル リストのインデックス
Developer Informationの添付ファイル:id3v1_test_suite.tar.gz - ID3.org

v1とv1.1の相違はtrackフィールドを含むかどうかで、v1.1ではcommentフィールドを2バイト削って、そこにnullとtrackフィールドを割り当てています。

フィールドの配置
Index v1 v1.1
1 head
125 comment
126 comment null
127 comment track
128 genre

サンプル

たとえば次のデータは、

54 41 47 54 49 54 4C 45 00 00 00 00 00 00 00 00  T A G T I T L E . . . . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  . . . . . . . . . . . . . . . .
00 41 52 54 49 53 54 00 00 00 00 00 00 00 00 00  . A R T I S T . . . . . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41  . . . . . . . . . . . . . . . A
4C 42 55 4D 00 00 00 00 00 00 00 00 00 00 00 00  L B U M . . . . . . . . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 32 30 30  . . . . . . . . . . . . . 2 0 0
30 43 4F 4D 4D 45 4E 54 00 00 00 00 00 00 00 00  0 C O M M E N T . . . . . . . .
00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 02  . . . . . . . . . . . . . . . .

下表の内容を表します。

データ フィールド 内容
54 41 47 ヘッダ 'TAG'
54 49 54 4C 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 タイトル 'TITLE'
41 52 54 49 53 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 アーティスト 'ARTIST'
   

ID3v2.3

タグ ヘッダ (tag header)

ファイルの最初の10バイトに、下表のヘッダが付きます。

ID3v2ヘッダ
フィールド バイト数 説明
file identifier 3 つねに"ID3" (49 44 33) で、これがID3v2タグであることを示す
version 2 1バイト目がメジャー番号で、2バイト目がリビジョン番号。03 00ならば、ID3v2.3.0を意味する
flags 1 ビットごとに意味が異なる
  • 7ビット目 … Unsynchronisation
  • 6ビット目 … Extended header
  • 5ビット目 … Experimental indicator
size 4 タグ ヘッダ以外のサイズ。それぞれのMSB (最上位ビット) はつねに0であるため、実質28ビットで表す
3.1. ID3v2 header - id3v2.3.0 - ID3.org

フレーム ヘッダ (frame header)

フレームの出現順に規則はなく。個々のフレームの最初の10バイトに下表のヘッダが付きます。

フィールド バイト数 説明
Frame ID 4 フレームの種類
Size 4 フレーム ヘッダ以外のサイズ
Flags 2  
3.3. ID3v2 frame overview - id3v2.3.0 - ID3.org
フラグ

2バイトで表され、それぞれのビットabc00000 ijk00000には、次の意味があります。

  • a … Tag alter preservation
  • b … File alter preservation
  • c … Read only
  • i … Compression
  • j … Encryption
  • k … Grouping identity
3.3.1. Frame header flags - id3v2.3.0 - ID3.org

フレーム

フレームの種類ごとに定義されています。

個々のフレームの最大サイズは16MBです。ID3v2Easy - ID3.org

テキスト情報フレーム (Text information frames)

"T"から始まるFrame IDを持ちます。

  • TALB … ALBum。音声のタイトル
  • TBPM … BPM (beats per minute) の情報
  • TCOM … COMposer。作曲家
  • TXXX … ユーザー定義のテキスト情報フレーム
4.2.1. Text information frames - details - id3v2.3.0 - ID3.org
ID 内容
TALB アルバム
TPE1 アーティスト
TPE2 アルバム アーティスト
TPOS ディスク番号
TCON ジャンル
TIT2 タイトル
TRCK トラック
TYER
Mp3tag Help - Tag field mappings
<Header for 'Text information frame', ID: "T000" - "TZZZ", excluding "TXXX" described in 4.2.2.>

Text encoding $xx
Information   <text string according to encoding>
4.2. Text information frames - id3v2.3.0 - ID3.org

最初の1バイトはテキストのエンコーディングを表し、その値によって次の意味となります。

コメント (Comments)
<Header for 'Comment', ID: "COMM">

Text encoding           $xx
Language                $xx xx xx
Short content descrip.  <text string according to encoding> $00 (00)
The actual text         <full text string according to encoding>
4.11. Comments - id3v2.3.0 - ID3.org

言語はISO 639-2のコードで表され、たとえば次のデータは、

43 4f 4d 4d 12 00 00 00 00 00 01 65 6e 67 ff fe
00 00 ff fe 54 00 45 00 53 00 54 00

下表の内容を表します。

データ フィールド 内容
43 4f 4d 4d Frame ID 'COMM'
12 00 00 00 Size 18 (0x12)
00 00 Flags  
01 Text encoding  
65 6e 67 Language 'eng' (English) ISO 639-2 Language Code List
ff fe 00 00 Short content descrip ''
ff fe 54 00 45 00 53 00 54 00 The actual text 'TEST'
同期歌詞 (Synchronised lyrics)
<Header for 'Synchronised lyrics/text', ID: "SYLT">

Text encoding       $xx
Language            $xx xx xx
Time stamp format   $xx
Content type        $xx
Content descriptor  <text string according to encoding> $00 (00)
4.10. Synchronised lyrics/text - id3v2.3.0 - ID3.org

歌詞はContent descriptorに、次の形式で格納されます。

Terminated text to be synced (typically a syllable)
Sync identifier (terminator to above string)    $00 (00)
Time stamp      $xx (xx ...)

これを用いると非同期歌詞の、

"Strangers in the night" $0A "Exchanging glances"

は、次の形式となります。

"Strang" $00 xx xx
"ers"    $00 xx xx
" in"    $00 xx xx
" the"   $00 xx xx
" night" $00 xx xx
0A "Ex"  $00 xx xx
"chang"  $00 xx xx
"ing"    $00 xx xx
"glan"   $00 xx xx
"ces"    $00 xx xx

サンプル

たとえば次のデータは、

49 44 33 03 00 00 00 00 10 19 54 41 4C 42 00 00  I D 3 . . . . . . . T A L B . .
00 0D 00 00 01 FF FE 41 00 4C 00 42 00 55 00 4D  . . . . . . . A . L . B . U . M
00 54 50 45 31 00 00 00 0F 00 00 01 FF FE 41 00  . T P E 1 . . . . . . . . . A .
52 00 54 00 49 00 53 00 54 00 54 50 45 32 00 00  R . T . I . S . T . T P E 2 . .
...

下表の内容を表します。

データ フィールド 内容
49 44 33 タグの識別子 'ID3'
03 00 タグのバージョン ID3v2.3.0
00 タグのフラグ なし
00 00 10 19 タグのサイズ 2073 (0x819) バイト

0b0001000000011001 (0x1019) のMSBを除くと、0b00100000011001 (0x819) の意味であるため

54 41 4C 42 フレームのID 'TALB'
00 00 00 0D フレームのサイズ 13 (0x0D) バイト (フレーム ヘッダを除く)
00 00 フレームのフラグ なし
01 フレームのエンコーディング Unicode
FF FE フレームのBOM UTF-16LE
41 00 4C 00 42 00 55 00 4D 00 フレームの内容 'ALBUM'
54 50 45 31 フレームのID 'TPE1'

ID3v2.4

v2.3よりテキストのエンコーディングが拡張され、以下の4つとなっています。id3v2.4.0-structure - ID3.org

  • 0x00 … ISO-8859-1
  • 0x01 … UTF-16。BOM付き
  • 0x02 … UTF-16BE (big-endian)。BOMなし
  • 0x03 … UTF-8

エンコーダ

複数の技術系サイトから、まとめて検索