■ MP3オーディオ・ファイルを覗いてみる(基本型)


 MP3オーディオ・ファイルで、最も基本的(古典的)な型は、 「  MP3オーディオ・フレームヘッダ  データ領域  ID3タグ  (バージョン1.0または1.1) 」だ。

 全体のサイズは、「4バイト + データサイズ + 128バイト」となる。

 では、サンプルファイル「 43 John 01.mp3」の冒頭96バイトを16進数表示で見てみよう。
FF F3 40 C0 00 0E 50 6A 12 54 08 C6 48 97 6D B6

91 D5 55 22 31 B0 01 0C 64 E2 CC 20 82 77 50 E2

D8 20 8A 1C F8 3E 50 E0 7C 4E 7C 30 5D E1 F5 7B

 フレームヘッダは4バイト(32ビット)で出来ている。
 それぞれのビットは、下に示すような意味を持っている。
◎ フレームヘッダの例
F F F 3 4 0 C 0
1111 1111 1111 0011 0100 0000 1100 0000
ABCDE FGHIJ KLM

◎ フレームヘッダの構造
 長さ(bits)位置(bits)意味
A11(31-21)フレーム同期。全てのビットをセット
B2(20,19) MPEG Audio のバージョンID
    [00] - MPEG v2.5 / [01] - (予約)
    [10] - MPEG v2 / [11] - MPEG v1
C2(18,17) レイヤーの種類
    [00] - (予約) / [01] - Layer3
    [10] - Layer2 / [11] - Layer1
D1(16) CRCエラー検査による保護
    [0] - 保護あり。この場合、16ビットのCRCがフレームヘッダの後に付加される
    [1] - 保護なし
E4(15-12) ビットレート (別表参照)
F2(11,10) サンプリングレート (別表参照)
G1(9) パディング
    [0] - なし / [1] - あり
H1(8) プライベートビット
    [0] - 使用しない / [1] - 使用する
I2(7,6) チャンネルモード
    [00] - ステレオ / [01] - ジョイント・ステレオ /
    [10] - デュアル・チャンネル(ステレオ)/ [11] - シングルチャンネル(モノラル)
J2(5,4) モードエクステンション。 チャンネルモードが「01 = ジョイントステレオ」の場合に有効。他の場合はゼロに設定。 詳細は略。
K1(3) 著作権
    [0] - 保護なし / [1]- 保護あり
L1(2) オリジナル
    [0] - コピー / [1]- オリジナル
M2(1,0) エンファシス(信号調整の一種)
    [00] - なし / [01] - 50/15ms /
    [10] - (予約) / [11] - CCITT J.17(詳細不明)

◎ビットレート表 (単位:kbps)
ビットMPEG1/L1MPEG1/L2MPEG1/L3MPEG2/L1MPEG2/L2,L3
MPEG2.5
0000freefreefreefreefree
0001323232328
00106448404816
00119656485624
010012864566432
010116080648040
011019296809648
01112241129611256
100025612811212864
100128816012814480
101032019216016096
1011352224192176112
1100384256224192128
1101416320256224144
1110448384320256160
1111割り当てなし

◎ サンプリングレート表 (単位:Hz)
ビットMPEG1MPEG2MPEG2.5
00441002205011025
01480002400012000
1032000160008000
11予約予約予約
 ビットの役割が分かったところで、これらのデータから曲の演奏時間を調べてみよう。

 再生1秒あたりに必要な容量は、ビットレートによって得られる。
 バージョンIDは [10] = MPEG v2、レイヤーは [01] = Layer3なので、 ビットレート [0100] を、上の表と照らし合わせてみると、32kbpsとなっている。3,200ビットだ。
 ファイル全体の容量は、1,465,284バイトなので、フレームヘッダとID3タグの分を引くと、 1,465,152バイトになる。
 ビットに換算するために8を掛け、ビットレートで割ると答えが出る。

      1,465,152 * 8 / 32,000 = 366.288秒

 366秒 = 6分6秒だ。

***

 次に、ファイルの末尾にくっついているID3タグについて見てみよう。

 MediaPlayerなどで音楽を聴く時、WAVEファイルの場合は、ファイル名と再生速度、 再生時間くらいしか表示されないが、MP3の場合は、アーティスト名やアルバム名など、様々な情報が表示される。
 これらの情報は、ID3タグから手に入れている。

 ID3タグには、バージョン1系とバージョン2系があるが、両者の間では大きく仕様が違っている。
 今回取り上げた基本型で使われているのは、バージョン1系なので、ここでは1系に限り概括し、 2系については次の機会に譲ることにする。

 1系には1.0と1.1がある。まず、ID3v.1.0の構造を見てみよう。

 冒頭に掲げたファイル「43 John 01.mp3」の末尾128バイトは、以下のようになっている。
 54 41 47    34 33 20 4A 6F 68 6E 20 30 31 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00    4E 4B 4A 56 20 4D 50 33 20 42 69 62 6C 65 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   4A
 6F 68 6E 20 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    00 00 00 
 00    53 74 65 70 68 65 6E 20 4A 6F 68 6E 73 74 6F 
 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00   65 
 構造は、いたって簡単だ。
 位置バイト数内容データ型
**03文字列ヘッダIDTAG
**330文字列曲名43 John 01
**3330文字列アーティスト名NKJV MP3 Bible
**6330文字列アルバム名John
**934文字列作成年 
**9730文字列コメントStephen Jhonston
**1271整数値ジャンル0x65 = 101:speech
(※ 今となっては、古典的基本型のMP3ファイルを見つけるのは結構大変だ。 このファイルは聖書のダウンロードサイトから入手したものなので、曲名やアーティスト名がなじみないのは、そのためだ。
 ジャンルは10進数値にすると、「 0 - ブルース、 1 - クラシック・ロック、 2 - カントリー、 3 - ダンス、 4 - ディスコ、 5 - ファンク 」のように、0から100番台にわたって割り当てられている。(他は略)

 コメント欄はID3v1.0では30文字分割り当てられているが、拡張版のID3v1.1では28文字になる。
 上の図で、灰色背景の白抜き数字で示した2バイト分が、v1.1では、それぞれ1バイトの整数値になっている。
 最初のバイトが識別子でゼロバイト、後のバイトはトラック番号を格納する。

***

 MP3オーディオファイルには、いろいろな仕様があって、読み解くには結構手間がかかるが、 この基本型から順に調べていこう。
 次回は、VBRという、可変ビットレート方式のファイルを取り上げる。



表紙へ   項目の看板へ   前の項へ