ガイド

コーデックとコンテナ:「再生できない」動画のほとんどを説明する区別

再生できない動画のほとんどは、「壊れている」の一言でまとめられがちな、まったく別の2つの問題のどちらかにたどり着きます。ひとつはプレーヤーが読めないコーデック、もうひとつは壊れたコンテナです。この2つは正反対の対処を必要とし、両者を取り違えることこそが、修復が必要なファイルにコーデックパックを入れたり、デコーダーがあれば済むファイルに修復ツールをかけたりする原因になっています。

どの動画も、1つではなく2つのもの

動画が再生できないとき、反射的に下される診断は「壊れている」です。その 半分は壊れていません。理由を理解するには、あらゆる動画ファイルが実際に は何であるか、その独立した2つのものを切り分ける必要があります。

コンテナは外側の形式です:MP4、MOV、MKV、AVI。 音声と映像のストリームを1つにまとめる包装であり、各フレームがどこに 位置し、映像がどう音声と同期を保つかを記録したインデックスを 保持します。ファイルの拡張子が指すのはコンテナです。

コーデックは、そのコンテナの内側にある フレームを圧縮するのに使われる方式です:H.264、HEVC(H.265とも呼ばれ ます)、AV1、VP9。実際の映像が書かれている言語にあたります。プレーヤー はそれを読むために、対応するデコーダーを備えている必要があります。

1つのファイル、2つの層:コンテナ(ファイル情報+インデックス)がフレームを包み、コーデックはそのフレームが圧縮されている言語です。どちらの層も、動画が再生できない原因になり得ます。

1つのファイルは両方を同時に備えており、それぞれ独立して壊れます。完璧に 無傷なコンテナが、プレーヤーにデコードできないコーデックのフレームを 収めていることもあります。見慣れたコーデックが、プレーヤーにフレームを まったく見つけられないほど破損したコンテナの中に収まっていることもあり ます。同じ「再生できない」という症状でも、原因はまったく別の2つ。だから こそ、どちらも .mp4 と表示される2つのファイルが、まるで似ても 似つかない挙動をすることがあるのです。これについてはMOV と MP4 でさらに掘り下げています。

頭の中の理解を固めてくれる本のたとえ

ファイルを1冊の印刷された本だと考えてください。コンテナは 物理的な本そのものです。製本、ページ番号、そして「第3章は90ページから 始まる」と示す目次です。コーデックは、その文章が 書かれている言語です。

こうすると、2つの故障が明白に、はっきりと別物だとわかります。本が しっかり作られていても、あなたが読めない言語で書かれていたら、本自体 には何の問題もありません。必要なのは翻訳者です。これがコーデック不足で、 デコーダーを入れるのは翻訳者を呼びに行くことにあたります。一方、製本が ばらばらになり、目次が破り取られたページを指しているなら、あなたがその 言語を流暢に読めるかどうかは関係ありません。本の中を辿ることができない のです。これがコンテナの破損で、修復は本を綴じ直し、その目次を作り直す ことにあたります。

翻訳者は背表紙を引きちぎられた本を直せませんし、製本職人はフィンランド語 を読む手助けはできません。間違った専門家を頼っても、どこにもたどり着けま せん。これはまさに、途中で切れたダウンロードを直そうとコーデックパックを 入れたり、プレーヤーが単にデコードできないだけの無傷な HEVC クリップに 修復ツールをかけたりするときに起きていることです。

「コーデックを入れる」——それが本当の対処になるとき

修復ではなくコーデックが必要なのは、ファイルは健全なのに、 プレーヤーがその圧縮を読めないときです。見分ける手がかりは、 動画がどこかでは再生できること。VLC で、撮影した端末で、同僚のマシンで は再生できるのに、あなたの特定のプレーヤーでだけ再生できない、という 状態です。

現代の典型例が HEVC(H.265)です。スマートフォンや カメラは、同じ画質でファイルサイズを半分にできるため、既定でこれを 記録します。ところが Windows は HEVC デコーダーを同梱していないので、 システムのプレーヤーは黒い画面を表示したり、映像なしで音声だけを再生 したりします。一方、独自のデコーダーを同梱した VLC では問題なく再生 できます。AV1 も古いハードウェアでは同じ道をたどり つつあります。対処はどれもファイルではなくデコーダーに関するものです:

  • デコーダーを追加する。 Windows なら、システムの プレーヤーが H.265 を読めるよう、Microsoft の HEVC ビデオ拡張機能を インストールします。
  • 自前のデコーダーを持つプレーヤーを使う。 VLC や IINA は、追加のインストールなしでほとんど何でもデコードします。
  • 一度だけ変換する。 どこでも開けるようにしたいなら、 HandBrake のようなツールでクリップを幅広く対応された H.264 MP4 に トランスコードします。再エンコードに常につきまとうわずかな画質の 低下は受け入れることになります。

長年の経験から得た注意点をひとつ。何でも再生できると謳う、オール インワンの「コーデックパック」インストーラーは避けてください。歴史的 に見て、それらはシステムのコーデックを濁らせ、解決したよりも多くの 再生トラブルを引き起こしてきました。公式のデコーダーを1つだけ入れるか、 自己完結したプレーヤーを使うのが、すっきりとした道です。

「ファイルを修復する」——まったく別の対処

コーデックではなく修復が必要なのは、コンテナが破損しているときです。手がかりは逆になります。動画が VLC を含めどこでも再生できず、しばしばサイズがおかしく見えたり、プレーヤーがコーデックの エラーではなく構造的なエラーを出したりします。

最も多い形が、インデックスの欠落や破損です。コンテナのインデックスは、 録画や転送が終わるときに書き込まれます。その終わりが中断される と、フレームはディスク上に残っても、それらへの地図がない状態になります:

コンテナの破損:フレームは生き残ったのに、プレーヤーがそれらを見つけるのに必要なインデックスが壊れているか、そもそも書き込まれていません。どんなデコーダーも役に立ちません。構造そのものを組み直す必要があります。

MP4 や MOV では、ffmpeg はこれを moov atom not found と 報告します。途中で切れたダウンロードや、抜き取られた SD カードも関連した 故障を生みます。ファイルが途中で切れ、その末尾とともにインデックスが 失われるのです。いずれの場合もデコーダーは無力です。プレーヤーはデコード すべきフレームにすら到達できないからです。役立つのはインデックスの再構築です。修復ツールは 生き残ったストリームを走査してフレームの境界を見つけ、その周りにコンテナ を再エンコードせずに組み直します。だからコーデックも画質 もそのままです。そのインデックスがどう働くかをバイト単位で知りたければMP4 の解剖 を、原因の全カタログ については 動画ファイルはどう壊れるのか をご覧ください。

どちらが必要か?1分でできるテスト

当て推量は要りません。最も寛容な主要プレーヤーである VLCでファイルを開き、その結果をこの表と照らし合わせてください。

見える症状何が問題か対処
VLC では再生できるが、普段のプレーヤーでは再生できないファイルは健全、デコーダーが不足(多くは HEVC)コーデックを入れるか、 H.264 に変換します。修復の出番ではありません。
スマホ/カメラでは再生できるが、PC では再生できないファイルは健全、PC 側のコーデックまたはプレーヤー不足PC にコーデックを入れるか、 VLC を使います。ファイルは問題ありません。
どこでも再生できない。サイズがおかしい、または途中で切れているコンテナのインデックスが破損または欠落ファイルを修復する。 生き残ったフレームの周りにインデックスを組み直します。
途中まで再生できるが、その後乱れる、または固まるストリーム内のフレームが破損(不良セクター)部分的に修復。 破損箇所の前後はきれいに保てますが、破損した領域は再生成できません。
0 バイト、または想定サイズのごく一部しかない映像がそもそも書き込まれなかった、または上書きされたどちらでも直らない。 デコードすべきフレームも、その周りに組み直すべきフレームも、ファイルの中に存在しません。

経験則はこうです。どこかで再生できるならコーデックの問題、 どこでも再生できないならコンテナを疑う。まずファイルを仕分け れば、声の大きいツールではなく、正しいツールに手を伸ばせます。

よくある質問

コーデックとコンテナの違いは何ですか?

コンテナは、すべてをまとめて包むファイル形式です:MP4、MOV、MKV、AVI。ストリームと、各フレームがどこにあり、音声と映像がどう揃うかを示すインデックスを保持します。コーデックは、その中のフレームを圧縮するのに使われる方式です:H.264、HEVC(H.265)、AV1、VP9。1つのファイルは両方を持ちます。外側にコンテナ、内側に1つ以上のコーデックです。拡張子が示すのはコンテナであってコーデックではありません。だからこそ、2つの .mp4 ファイルがまったく違う挙動をすることがあるのです。

コーデックを入れるべきですか、それともファイルを修復すべきですか?

独自のデコーダーを同梱し、破損にも寛容な VLC でファイルを試してください。VLC では再生できるのに普段のプレーヤーでは再生できないなら、ファイルは健全で、コーデックが不足しているだけです。足りないデコーダーを入れるか、ファイルを変換しましょう。VLC を含めどこでも再生できないなら、コンテナが破損している可能性が高く、ファイルには修復が必要です。この2つの症状は外からは見分けがつきませんが、正反対の対処を必要とします。

動画が VLC では再生できるのに Windows Media Player では再生できないのはなぜですか?

VLC は独自のデコーダーを内蔵していて、Windows にインストールされているものに依存しないからです。クリップが VLC で再生できるのにシステムのプレーヤーで再生できないなら、ファイルは問題ありません。単にシステムにそのコーデックがないだけで、多くの場合それは Windows が既定では含めていない HEVC(H.265)です。そのデコーダーを入れるか、動画を H.264 に変換すれば、そのギャップは埋まります。これはコーデックの問題であって破損ではないので、修復ツールを使っても何も変わりません。

コーデックを入れれば壊れた動画は直りますか?

いいえ。コーデックは、健全だが見慣れない圧縮方式のためのデコーダーです。コンテナが破損していると、プレーヤーはデコーダーに渡すべきフレームの場所すら特定できないので、どんなコーデックパックも役に立ちません。さらに悪いことに、何十年にもわたる怪しい「コーデックパック」のインストーラーがシステムのコーデックを濁らせ、それ自体が再生トラブルを引き起こしてきました。ファイルがどこでも再生できないなら、必要なのは新しいデコーダーではなく構造的な修復です。

動画を修復すると再エンコードされたり、コーデックが変わったりしますか?

いいえ。構造的な修復は、すでに存在するフレームの周りにコンテナとそのインデックスを組み直すだけです。フレームをデコードも再エンコードもしないので、コーデックも画質もそのままです。コーデックを変えるのは、トランスコードと呼ばれる別個の意図的な作業で、より広い互換性が欲しいときに健全なファイルに対して行うものであり、いくらか画質を犠牲にします。

関連記事:MOV と MP4 — iPhone の動画が PC で再生できない理由、 そしてバイト単位で巡るMP4 の解剖:moov アトム。 あるいは MP4MOV の修復へ直行——アップロードなしで。