ByteScope

M4V ファイル形式

Apple の MPEG-4 動画バリアント。多くは DRM 付きの iTunes 動画です。

MIME タイプ
video/x-m4v
拡張子
.m4v
カテゴリ
動画

マジックナンバー(ファイル署名)

0x0000000466747970ftypISO-BMFF 'ftyp' box
0x000000084D345620M4V brand 'M4V '

M4V 形式について

M4V は、iTunes Store が配っていた形の MP4 です。コンテナは ISO base media file format、ボックスも同じボックス、映像は通常 H.264 で音声は AAC。素の .mp4 との構造上の違いは、FileTypeBox のブランド文字列と、購入コンテンツの場合はサンプル記述の中にある FairPlay の暗号化レイヤーだけです。Apple が拡張子を分けたのは、自社ソフトウェアがファイルを iTunes へ振り分けられるようにするためと、保護されたメディアとされていないメディアを一目で見分けられるようにするためでした。意味はそれだけです。保護されていない M4V は .mp4 にリネームすれば何でも再生でき、保護されたものは名前が何であれどこでも再生できません。ラベルが付いているのではなく、映像のバイトそのものが暗号化されているからです。

ヘッダーの構造(バイト単位)

オフセット長さフィールド意味
04ftyp box sizeFileTypeBox の長さをビッグエンディアンで表したもので、このフィールドを含みます。00 00 00 20 は 32 バイトで、メジャーブランド、マイナーバージョン、互換ブランド 3 つが収まる大きさです。Apple の書き手も ffmpeg も、この形を出力します。
44Box type 'ftyp'66 74 79 70。ISO/IEC 14496-12 がファイル先頭のボックスであることを要求しているため、ヘッダで唯一読める ASCII がオフセット 0 ではなくオフセット 4 に来ます。
84Major brand 'M4V '4D 34 56 20。大文字 M、数字 4、大文字 V、そしてブランドの一部である ASCII スペースが 1 つ。同じ系列の音声専用の兄弟はこの同じ位置に M4A や M4B を置き、いずれも同じやり方で 4 文字に埋められています。
124Minor version規範的な意味を持たないビッグエンディアンの 32 ビット数値で、ffmpeg で remux したファイルには 00 00 02 00 が入ります。バージョンによる可否判定の材料ではなく、これを根拠にファイルを拒否してはいけません。
16variableCompatible brandsボックスの残りを 1 ブランド 4 バイトで埋めます。よくあるのは M4V を繰り返したあとに isom、iso2、avc1 が続く形です。ここに isom があるということは、素の MP4 リーダーで扱えるとファイル自身が明言しているに等しく、リネームがしばしば通用するのはそのためです。
328Second box headerftyp の後ろのボックスのサイズと型で、moov・mdat・あるいはプレースホルダの free です。ftyp が 32 バイトのときに 32 に来ます。位置を信用せず、オフセット 0 から長さを読んでください。

似た形式との見分け方

紛らわしい形式見分け方
MP4違うのはオフセット 8 の 4 バイトだけで、M4V か isom・mp42・avc1 かです。他は何ひとつ変える必要がなく、オフセット 16 の互換ブランド一覧にはたいてい isom が入っています。手元の M4V が本当に再生できるかを知りたいなら、ヘッダは教えてくれません。サンプル記述の中に sinf 保護ボックスがないか探してください。FairPlay のコンテンツは、コーデックのエントリを保護付きのものに置き換えます。
M4A同じ系列の音声専用メンバーで、オフセット 8 のブランドが M4A、4D 34 41 20 です。バイト配置は他が同一なので、ヘッダだけでは映像が無いことの証明にはなりません。決定的な答えは各トラックの hdlr ボックスにあるハンドラ型で、映像なら vide、音声なら soun です。カバー画像入りの .m4a でも、トラックは音声のみです。
QuickTime Movieオフセット 8 のブランドが qt です。どちらも Apple のもので、どちらも ISO base media ファイルで、どちらも H.264 と AAC を日常的に運ぶので、人は 2 つの拡張子の間でファイルを気軽に移動させます。効いてくる違いは中身です。QuickTime は、M4V を受け取る側がまったく想定していないコーデックやトラック型を許します。
3GPオフセット 8 のブランドが 3gp4・3gp5・3gp6 です。どちらも同じコンテナを特定の機器向けに絞ったプロファイルで、片方は携帯端末、もう片方は Apple のプレイヤー向けです。一般的なケースではどちらも H.264 と AAC を持ちます。拡張子が記録しているのは想定された届け先であって、構造上の違いではありません。

よくある壊れ方

  • DRM を破損と取り違えるケース。購入した FairPlay 保護付きの M4V は、ヘッダも完全に無傷でボックスツリーもきれいに歩けるのに、認証された Apple のデバイス以外では再生を拒みます。修復すべきものは何もありません。サンプルデータが暗号化されているだけで、hex エディタで見れば、H.264 のスタートコードがあるはずの場所に高エントロピーのバイトが並んでいて確認できます。
  • moov ボックスが書かれなかったケース。途中で中断した書き出しやダウンロードは、mdat が埋まったまま索引の無いファイルを残し、どこでも開けません。他の ISO base media ファイルと同じく、フレームは残っているので、同じエンコーダが作った健全なファイルからサンプルテーブルを組み直せば復旧できます。
  • remux でブランドが書き換わったケース。FileTypeBox を保持しないままストリームをコピーするツールに M4V を通すと、オフセット 8 のバイトが isom に変わります。映像には手が付いていないので再生は問題ありませんが、iTunes をはじめブランドで振り分けるものは、これを別種のファイルとして扱います。
  • 途中切れ。ヘッダは最先端にあって健全なままなので、中身の大半が欠けたファイルでもファイル形式判定は M4V と正しく報告します。露見するのはボックスを歩いたときで、最後のボックスが実際のファイルより多くのバイトを申告しています。
  • 遅い回線で moov が末尾にある場合。破損ではありませんが、見ている側には区別がつきません。索引が末尾にあるので、最後の 1 バイトが届くまで何も再生されないからです。前へ移す処理はオフセットを書き換えるだけで、エンコードされた映像はそのまま残ります。

この形式の現在地

M4V に意味があったのは、人が iTunes で映画やテレビ番組を買っていた時代です。同じカタログがダウンロードではなくストリーミングで配られるようになった今、ほぼ歴史的な遺物です。それでもファイルは出てきます。古い iTunes ライブラリ、Apple のソフトウェアから書き出したホームビデオ、惰性でこの拡張子を吐く HandBrake のプリセットなど。新規に選ぶ理由はどこにもありません。MP4 なら同じコンテナで曖昧さがなく、プレイヤーもブラウザも素の拡張子のほうを好みます。手元にあるのが M4V なら、実務上の問いは保護されているかどうかだけです。保護されていなければそれは MP4 で、リネーム以外に何も要りません。保護されていれば、どんな変換ツールも助けになりません。足りないのはコーデックではなく鍵であり、そうでないと主張するツールが説明しているのは変換ではなく回避です。

M4V ファイルをこのサイトで開く

どれもブラウザ内で動きます。ファイルが端末から出ることはありません。

関連する形式

M4V と混同しやすい形式です。先頭バイトを見比べてください。

形式先頭バイト拡張子
MP466 74 79 70.mp4
QuickTime Movie66 74 79 70.mov
M4A66 74 79 70.m4a

よくある質問

ファイルのマジックナンバーとは何ですか?

ファイル先頭の数バイトで、名前が何であろうとその形式を示すものです。PNG は必ず 89 50 4E 47 で始まり、ZIP は 50 4B 03 04 で始まります。OS もブラウザも file コマンドも、拡張子を信用せずこのバイト列を読みます。だからファイル名を変えても中身の正体は変わりません。

マジックナンバーを自分で確認する方法は?

macOS や Linux なら xxd -l 16 ファイル名 で先頭 16 バイトが表示されます。Windows なら PowerShell で Format-Hex -Path ファイル名 -Count 16 です。あるいはこのサイトのファイル形式判別ツールにドロップすれば、ローカルでバイト列を読んで形式を教えてくれます。アップロードはありません。

2 つの形式が同じマジックナンバーを持つのはなぜ?

一方が他方の上に作られているからです。docx、xlsx、pptx、apk、jar、epub はすべて中身が ZIP アーカイブなので ZIP の署名で始まり、区別するには内部のエントリを見る必要があります。Java の class ファイルと macOS のユニバーサルバイナリはどちらも CA FE BA BE で始まり、直後のフィールドで見分けます。

マジックナンバーがまったくないファイルもある?

あります。XML、HTML、JSON、SVG、CSV といったテキストベースの形式には固定のバイト署名がないため、構造から判別します。先頭の <?xml 宣言、<svg 要素、あるいは { に続く引用符付きのキーなどです。これは確定ではなく推測なので、このリファレンスではそうした形式をプローブ判別として示しています。

マジックナンバーが一致すればそのファイルは安全?

いいえ。わかるのは形式であって、中身が無害かどうかではありません。正規の PDF や docx でも悪意のあるペイロードを含んでいることがあります。特に拡張子とバイト列が食い違うときに真の形式を知るのは有用な第一段階ですが、マルウェアスキャンではありません。

M4V かもしれないファイルをお持ちですか?ファイル形式判別ツールで調べる — マジックナンバーをローカルで読み取ります。アップロードは一切ありません。またはすべての形式を見る。