QuickTime Movie ファイル形式
Apple QuickTime コンテナ。現在の MP4 の祖先にあたる形式。
- MIME タイプ
- video/quicktime
- 拡張子
- .mov
- カテゴリ
- 動画
マジックナンバー(ファイル署名)
| 0x00000004 | 66747970 | ftyp | ISO-BMFF 'ftyp' box |
| 0x00000008 | 71742020 | qt | brand 'qt ' |
QuickTime Movie 形式について
MOV は Apple の QuickTime コンテナで、MP4 の直系の祖先です。ISO が ISO base media file format の出発点として QuickTime のファイル形式を採用したため、両者はボックス構造、ボックス名の大半、そして意味づけの多くを共有しています。今どきの QuickTime ファイルは、MP4 とまったく同じ FileTypeBox で自分を名乗り、そこに末尾スペース 2 つのブランド qt を載せます。このボックスが導入される前に書かれたファイルには、ヘッダのマジックがそもそもありません。いきなり最初の実ボックスから始まるので、MOV の検出器は PNG のように固定のバイト列ひとつには頼れないのです。MOV が MP4 と本当に違うのは、何を入れてよいかという点です。タイムコードトラック、ProRes や DNxHD の映像、再エンコードなしにトリミングや並べ替えを行う編集リスト、まったく別のファイルにあるメディアを指すリファレンスムービーなどが許されています。
ヘッダーの構造(バイト単位)
| オフセット | 長さ | フィールド | 意味 |
|---|---|---|---|
| 0 | 4 | ftyp box size | FileTypeBox の長さをビッグエンディアンで表したもので、この 4 バイトを含みます。00 00 00 14 は 20 で、実用上の最小サイズです。型、メジャーブランド、マイナーバージョン、互換ブランドちょうど 1 つが入ります。MP4 ファイルは互換ブランドを複数並べるので、ここはたいていもっと長くなります。 |
| 4 | 4 | Box type 'ftyp' | 66 74 79 70。すべての ISO base media ファイルが持つのと同じ FileTypeBox です。これがあること自体はどの形式かを何も語りません。語るのは続くブランドだけです。 |
| 8 | 4 | Major brand 'qt ' | 71 74 20 20。q と t の後ろに ASCII のスペースが 2 つで、このスペースはブランドの一部であり、削ってよいパディングではありません。4 文字コードの末尾空白を落とすツールは非常に多く、そういうツールはこのブランドに一致できなくなります。 |
| 12 | 4 | Minor version | ビッグエンディアンの 32 ビット数値で、参考情報のみです。ffmpeg はここに 00 00 02 00 を書き、Apple 自身の書き手はビルド日付のような値を入れます。どちらも制約ではなく、この値を理由にファイルを拒否すべきではありません。 |
| 16 | variable | Compatible brands | ボックスの残りで、1 ブランドあたり 4 バイト。QuickTime ファイルはたいてい qt をもう一度並べるだけです。MOV がここに isom や mp42 も並べているなら、中身が素の MP4 リーダーでも扱える範囲に収まっていると告げていることになります。 |
| 20 | 8 | Second box header | ftyp が 20 バイトなら、ここが次のボックスです。QuickTime の出力ではこれが wide であることが非常に多く、これは 8 バイトのプレースホルダボックスで、後ろの mdat をファイルをずらさずに 64 ビットサイズへ昇格できるようにするためだけに存在します。それ以外なら moov・mdat・free のいずれかです。 |
| 4 | 4 | Legacy first box type | 2004 年より前の QuickTime ファイルには ftyp ボックスがなく、この同じ位置に最初の実ボックスの型が入ります。moov・mdat・free・skip・wide・pnot のいずれかです。オフセットは同じでも意味が違い、この曖昧さがあるために MOV の判定は厳密ではなく確度ベースになります。 |
似た形式との見分け方
| 紛らわしい形式 | 見分け方 |
|---|---|
| MP4 | オフセット 7 まで同一です。判定はオフセット 8 のメジャーブランドがすべてで、qt なら QuickTime、isom・iso2・mp41・mp42・avc1 なら MP4 です。ヘッダから先の本当の違いは中身のほうで、ProRes や DNxHD、タイムコードトラックを抱えた MOV は正当な QuickTime ですが、ボックスがきれいに解析できたところで一般的な MP4 プレイヤーがデコードできるものではありません。 |
| M4V | オフセット 8 のブランドが qt ではなく M4V です。どちらも Apple のエコシステムから出てきて、どちらも H.264 と AAC を持つことが多いので、拡張子は中身ではなく出所を教えているに過ぎません。片方をもう片方にリネームして通ってしまう確率は本来あるべき水準よりずっと高く、通らなかったときに hex エディタを開く羽目になるのはそのためです。 |
| AVI | 古い収録・編集ワークフローで今も見かけるもうひとつのコンテナで、構造はまるで似ていません。AVI は RIFF で、オフセット 0 が 52 49 46 46、オフセット 8 のフォームタイプが AVI です。そちらのサイズはリトルエンディアンで、QuickTime ファイルのサイズはすべてビッグエンディアンです。どちらを読んでいるのか自信がないときの、よい妥当性チェックになります。 |
| 3GP | こちらも ftyp ボックスを持ち、ブランドは 3gp4・3gp5・3gp6 です。実務上の違いは範囲で、3GP はコーデックとボックスの使い方を携帯端末が処理できる範囲に絞るのに対し、QuickTime は意図的にその逆をやり、まったく別のファイルに置かれたメディアへの参照まで含めてほぼ何でも許します。 |
よくある壊れ方
- moov ボックスが書かれないまま終わった録画。これが典型的な壊れた MOV です。電源を失ったカメラや画面収録ソフトは、全フレームを mdat に書いたところで索引を追記する前に死に、どのプレイヤーでも開けない数ギガバイトのファイルを残します。フレームはすべて残っていて復旧もできますが、同じ機器・同じ設定で撮った健全なファイルからサンプルテーブルの構造を借りてくるしかありません。
- リファレンスムービーの参照先が移動した場合。QuickTime は MOV から他のファイルにあるサンプルを指せるので、映像を 1 バイトもコピーせずに編集を保存できます。元ファイルを移動したりリネームしたりしても MOV は完全に正しいままです。開けるし、正しい長さも表示するし、何も再生しません。破損に見えますが違います。
- 途中切れ。ftyp ボックスは小さくて先頭にあるので、末尾がどれだけ失われてもヘッダは健全なままです。実際に教えてくれるのはボックスを歩くことで、最後のボックスがファイル末尾を超えるサイズを申告しています。
- テキストモード転送、あるいはブランドが削られた場合。テキストだと思ったバイトを書き換える処理はどれも、オフセット 8 の qt ブランドにある ASCII スペース 2 つを削り落としかねません。そうなると、他はバイト単位で無傷のファイルを厳格なリーダーが拒否します。
- 絵を隠してしまう編集リスト。壊れた、あるいは妙な書かれ方をした elst ボックスは、メディア末尾より先の位置から再生を始めさせることがあり、開けて再生時間も表示するのに真っ黒しか映らないファイルができあがります。デコーダではなくヘッダのレベルの問題で、単純な remux では直りません。
この形式の現在地
MOV が生きているのは配信側ではなく制作側です。Final Cut Pro と Avid はこれで作業し、ProRes と DNxHD はこれで配られ、Canon や Blackmagic、RED のカメラはこれで記録し、macOS の画面収録も既定では MOV です。そこを置き換えたものは何もありません。MP4 にできなくて MOV にできること、つまりタイムコードトラック、アルファチャンネル、巨大な中間コーデック、編集リスト、リファレンスムービーは、まさに編集ワークフローが必要とするものだからです。そのワークフローから出ていくものには向きません。H.264 か H.265 の MP4 ならどこでも再生できますし、ProRes の MOV は巨大なうえに大半のマシンではデコードすらできません。実際、MOV で始まるプロジェクトのほぼすべてが最後に MP4 へ書き出し、MOV はマスターとして手元に残ります。
QuickTime Movie ファイルをこのサイトで開く
どれもブラウザ内で動きます。ファイルが端末から出ることはありません。
関連する形式
QuickTime Movie と混同しやすい形式です。先頭バイトを見比べてください。