今すぐ修復
- ファイルをドロップ
- 修復はローカルで実行
- 結果をダウンロード
ほぼすべての動画プレーヤーやコンバーターはffmpegを土台にしているため、そのエラーはいたるところで顔を出します。多くの場合、「[mov,mp4,m4a,3gp,3g2,mj2 @ ...] moov atom not found」に続いて「Invalid data found when processing input」と表示されます。このメッセージは意図的に汎用的です。内部的には AVERROR_INVALIDDATA であり、デマルチプレクサ(demuxer)が、期待していた形式に合わないバイト列に行き当たったことを意味します。上のエリアにファイルをドロップすれば、ツールはブラウザ内でコンテナの構造を読み取り、動画ストリームが生き残っているかを見きわめ、プレーヤーが開けるきれいなファイルを再構築します。クリップがデバイスから出ていくことは一切ありません。
映像は無事なのにパーサーがファイルを拒む理由
MP4やMOVのファイルは、ボックス(アトムとも呼ばれます)のツリーです。各ボックスは4バイトのサイズと4バイトのタイプで始まります。ftyp はブランドを宣言し、mdat は生の音声・映像サンプルを保持し、moov はインデックス、すなわちどのフレームがどこにあり、どのコーデックでデコードされ、どのタイムスタンプで再生されるかを示すサンプルテーブルです。ffmpegはファイルを開くと、このツリーをたどります。整合の取れた moov が見つからない、あるボックスがファイルの末尾をはみ出すサイズを宣言している、あるいはボックスヘッダーがあるはずの場所のバイトがゴミである、といった場合、ffmpegは処理を止めて「Invalid data found when processing input」と報告します。
そして肝心なのは、重いデータ、つまりあなたの実際の映像が入った mdat は、これが起きているあいだも完全に無事でありうる、ということです。パーサーが失敗しているのはインデックスであって、映像そのものではありません。だからこそ、「有効なデータがない」とされる同じファイルが、正しく記述してくれるコンテナを待つ、状態のよいフレームで満たされていることがあるのです。これは古典的な 「moov atom not found」 のケースと大きく重なります。カメラが moov を書き込む前に中断された録画は、まさにこの特徴を残します。
もう一度再生できるようにコンテナを再構築する
サンプルは生き残ったのに地図が壊れている場合、直し方はリマックス(remux)です。生き残ったストリームデータを走査し、コンテナが必要とするサンプルテーブルを再構築し、同じ映像の周囲に、きちんと整った新しいMP4を書き出します。再エンコードは行われないため、画質の劣化はありません。フレームは元のフレームのままで、ただ正しくインデックスし直されるだけです。moov がまるごと欠けている場合は、メディアストリームの構造からツールがそれを再構築し、プレーヤーが探していたフレームの地図を用意します。
もう一つのよくある引き金は、拡張子の不一致や転送の中断です。.mp4 という名前なのに実際には別のコンテナとして保存されたファイルや、ダウンロードが途中で止まったクリップは、いずれもffmpegを予期しないバイトでつまずかせます。ツールは、ファイルが本当は何であるかを名前ではなくボックスのシグネチャ(署名)で確かめ、届いた分を救出します。これらはすべてブラウザ内で実行されます。ffmpegのインストールも、コマンドラインも不要で、いかなるサーバーも動画を受け取ることはありません。
本当に直せないとき
コンテナの再構築は、問題がコンテナにあるときにだけ効きます。その下にあるメディアデータそのものが破壊されたり上書きされたりしている場合、たとえばゼロを返したカード、故障しかけたドライブに壊されたファイル、カメラが上から録り直してしまった録画などでは、インデックスし直す良好なフレームがなく、ディスク上にない映像を再構築できるツールは存在しません。まずストレージから生のバイトを復旧し、そのうえで修復してください。
正直に言えば、もう一つの見込みのないケースは、実は動画ではないファイルです。ドキュメント、画像、あるいはたまたま .mp4 の拡張子を持っている切り詰められた断片などです。そこでは「Invalid data」は文字どおり本当のことで、メディアではないファイルを、どんなリマックスでも再生できるクリップに変えることはできません。とはいえ、映像が実際に存在するときには、ブラウザ内だけで完結する方式は、証拠映像、個人的な動画、未公開の作品といった機微な録画を、どこにもコピーせずに修復できることを意味します。「Network」タブ(ネットワークタブ)を開けば、クリップのバイトが0しか送信されていないことを確認できます。
修復できるものとできないもの
修復できる
- moovインデックスが欠けているか壊れている一方で、mdatの映像は生き残っているMP4/MOVファイル
- カメラがコンテナを最終処理する前に中断された録画(「moov atom not found」と重なります)
- デマルチプレクサを止めてしまう、壊れたサンプルテーブル、誤ったオフセット、不正なタイムスタンプ
- 拡張子が一致しないクリップで、本当のコンテナをツールがシグネチャで検出できるもの
- 中断されたダウンロードや転送のうち、実際に届いた部分
修復できない
- メディアデータそのものが上書きされたか、ゼロとして返されたファイル。インデックスし直すフレームがありません
- 動画の拡張子をまとった、メディアではないファイル(ドキュメント、画像、断片)
- 故障したドライブやカードによって物理的に失われた映像(まず生のバイトを復旧してから修復してください)
- 鍵のない、暗号化またはDRM保護されたストリーム
修復が失敗した場合、その理由(データの欠落か構造の破損か)をお伝えします。失敗した修復に料金が請求されることはありません。