2005年3月号掲載
第26回 携帯ゲーム機PSPの動画ファイル「MP4」とは何か
2004年12月にソニー・コンピュータエンタテインメントが発売した携帯ゲーム機「PSP(プレイステーション・ポータブル)」は、音楽や動画の再生機能を備える。採用した動画圧縮規格は最新の「H.264」だが、ファイルは「MP4」に準拠したものとなる。今回は、このH.264とMP4の関係について詳しく述べたい。
2004年12月にソニー・コンピュータエンタテインメントが発売した「PSP(プレイステーション・ポータブル)」は、新しいビデオ圧縮規格「H.264」に対応した。開発の段階で公表されたとき以来、注目を集めていた。H.264は、ビデオの圧縮方式のみを定めた規格なので、オーディオ圧縮と、ビデオとオーディオの同期をとって格納・配信する「多重化」の仕組みが別途必要となる。PSPが採用した多重化の規格は「MP4」だ。PSPでは「MPEG-4」で圧縮した動画をMP4で多重化した映像も扱えるため、規格の関係が混乱しやすい。今回はこの辺りの関係を詳しく解説しよう。
そもそもMPEG規格は、いくつかの独立した規格の集まりを総称したものだ。MPEG-4の場合、ビデオとオーディオの多重化方法を定めた「MPEG-4 Part1 System (ISO/IEC 14496-1)」、ビデオの圧縮方式を定めた「MPEG-4 Part2 Video (ISO/IEC 14496-2)」、オーディオの圧縮方式を定めた「MPEG-4 Part3 Audio (ISO/IEC 14496-3)」が当初策定された。MPEG-4 Part1 Systemには他の規格を積極的に利用する考え方もあり、当初は明確なファイル保存形式が規定されていなかった。その後、規格が拡張され、ファイル形式が策定された。これを「MP4ファイルフォーマット」と呼ぶ。
MP4ファイルフォーマットは、Apple ComputerのQuickTimeを基にした、非常に自由度が高いファイルフォーマットだ。「BOX(当初はQuickTimeにならって『ATOM』と呼ばれた)」と呼ばれるさまざまなサイズのデータが集まってMP4ファイルを構成する。BOXにはいろいろな種類があり、自由に増やすこともできる。
MP4ファイルフォーマットは、当初MPEG-4 Part1の拡張機能として策定されたが、その後独立して「MPEG-4 Part12」「同14」となった。Part12は、MP4ファイルフォーマットの基本部分を定めている。Part14は、Part12に追加する形で、MPEG-4 VideoとMPEG-4 AudioをMP4ファイルに格納するための方法を定めている。
H.264は、MPEG-4規格の一部としても取り込まれており、MPEG-4では、「MPEG-4 Part10 Advanced Video Coding (AVC)」と呼ばれている(以降、H.264/AVCと記述)。さらにH.264/AVCとMPEG-4 AudioをMP4ファイルに格納する方式も定められている。これが「MPEG-4 Part 15」で、Part12の拡張機能として策定された。つまり、MPEG-4 VideoはPart14、H.264/AVCはPart15で規格化された。少々ややこしいので、図1に整理した。

■MP4フォーマットは多機能かつ複雑
それでは、実際のMP4ファイルの内部を少し詳しく見てみよう。図2は、PSPで再生可能なMP4ファイルを作成できるソニーの「Image Converter 2」で作成したMP4ファイルのBOX情報を、アイ・ビー・イーが使っているオリジナル解析ソフトで表示したものだ。MP4ファイルは多くのBOX情報の集合体で、デコーダは必要ないくつかのBOX情報を参照して再生する。デコード時に不要なBOX情報は読み飛ばしてよいことになっている。BOX情報はカテゴリーごとに階層化されており、BOXの中に別のBOXを持つことがある。図2では、「moov」の中に「mvhd」、2つの「trak」、それに「uuid」が入っている。
ビデオとオーディオの圧縮データは「mdat」の中に交互に格納される。図2では、ヘッダ情報の「moov」が、「mdat」より後に存在する。規格では、どの順番で格納してもよいことになっている。「moov」の内容は、「mdat」の内容が固まった後でしか作れないので、moovが後に存在するのは不自然ではない。
表に、それぞれのBOX情報の簡単な説明をまとめた。各BOX情報は、独立しているものと、絡み合っているものもある。例えば、「mdat」中でどこがビデオとオーディオの切れ目になるかは、「mdat」のデータだけでは分からない。ビデオとオーディオの切れ目を知るためには、「stsc」、「stco」の内容を参照しなければならない。デコーダは、さらに「stsz」の内容を参照し、この3つのBOX情報からフレームごとのデータの位置とサイズを知る。
再生時にビデオとオーディオの同期を取るには「stts」を参照してビデオの各フレーム、オーディオフレーム(格納単位)ごとの再生時間、さらに再生すべき時刻を取得する。「stts」をうまく使うと、フレームごとに再生時間が異なるデータ、つまり可変フレームレートのデータ作成が可能になる。
図2の一番上にある「ftyp」には、このファイルの互換性を示す情報が格納されている。MP4ファイルフォーマットは、かなり自由度が高く、また、格納されるビデオ・オーディオデータもさまざまだ。複数の形式のデータが混在した際に、それぞれに最適なプレーヤー(デコーダ)や再生方法を割り当てるために、この情報を用いる。PSPでは対応ファイルかそうでないかを、この情報で区別していると考えられる。
ちなみに、MP4ファイルフォーマットは、ストリーミング配信には適さない。ファイルへの格納のためのフォーマットなので、この点は割り切って策定されたようだ。MP4ファイルをストリーミングする場合は、一般にRTP(Real-time Transport Protocol)などのフォーマットに変換する。ストリーミング配信時にストリーミング用のフォーマットへの変換を容易にするためのオプション情報として、ヒントトラックが規格の一部として規定されている。RTP配信用のヒントトラックには、RTPヘッダなどの情報を格納する。

![]() |
||||
Image Converter 2が作るMP4ファイルが準拠する形式。第3世代携帯電話で使われる3gppフォーマットと同じ形式だ。 | PSPが再生できるAVC/H.264のMP4ファイルの構造はこのような形の可能性が高い。他社製品も多くがこれに準ずる。 | AVIは、フォーマットとしては単純で、MP4と比較すると機能が少ない。例えば可変フレームレートには対応しない。 |

図1MP4フォーマットに、MPEG-4 Video、H.264/AVCを格納する場合に使用する規格を整理した。比較のためにAVIフォーマットに保存されたDivXも掲載してある。上の濃い灰色部分はシステムやファイルフォーマットに関する規格、下の薄い灰色部分は実際の動画や音声を圧縮するための規格を示している。

![]() 図2 ソニーのImage Converter 2 で作成したMP4ファイルの内部構造。多くのBOX情報の集合体だ。 最初のトラックにビデオの情報が、次のトラックにオーディオの情報が 入っている。BOX情報は階層化されており、BOXの中に別のBOXを持てる。 かっこ内の数字は各BOX情報のサイズ。 |
表1 BOX情報の簡単な説明。白字のBOX情報は、MPEG-4規格で必須とされているもの。MPEG-4規格はこれ以外のBOXも規定している。 |
(文/ 竹松 昇、(株)朋栄アイ・ビー・イー) ※編集の関係上、雑誌掲載内容と少し異なる個所があります。
