破損して再生できないmp4ファイルを修復する方法
ふとパソコンに保存してあるmp4ファイルを再生しようとしたらエラーが出て再生できないといったことないでしょうか。
動画ファイルを保存しているHDDなどのディスクドライブが経年劣化などで破損していった場合、その影響で動画ファイルが壊れてしまうことがあります。
また、動画ファイルを削除した後に復元ソフトを使ってファイルを復旧したはいいものの、再生できなかった・再生できるけどシークできないという時もあるでしょう。
ですが、パソコンを使えば動画ファイルを復旧できる可能性もあるので、mp4ファイルを修復して再生できるようにする方法をいくつか紹介します。
VLC Media Playerを使う
一番オススメは「VLC Media Player」という動画再生フリーソフトを使用する方法です。
VLC Media Playerは動画再生ソフトであり、動画変換ソフトとして使用することは少ないのですが、一応動画変換機能(エンコード機能)も兼ね備えています。
VLC Media Playerのインストールについてはこちらの記事で解説していますので、インストール方法がわからない場合は、下の記事を参考にして準備を進めておいてください。
修復手順
まずはVLC Media Playerを起動しておきましょう。
壊れた動画ファイルをエンコードしようとしていることをVLC Media Playerが検出した場合、修復可能な場合は自動的に修復してくれます。
特別な知識を必要としないので、まずはVLC Media Playerで動画ファイルの修復を試してみることをお勧めします。
recover_mp4とffmpegを使用する
VLC Media Playerを使わずにコマンドでmp4ファイルを修飾することができます。この方法であればVLC Media Playerを使わずにコマンドで動画ファイルを修復することができます。
ダウンロード
まずはrecover_mp4とffmpegをダウンロードして準備します。
recover_mp4は下記サイトから入手できます。
ダウンロードしたrecover_mp4は自分がわかりやすいフォルダに保存しておくことをお勧めします。
ダウンロードしたファイルは ZIP 形式なので解凍しましょう。
これでrecover_mp4の準備完了です。続いてffmpegをダウンロードします。
ffmpegは下記公式サイトからダウンロード可能です。
画面中央に大きく表示されている[Download Source Code]ではないので間違えないようにしてください。
ダウンロードするバージョンなどを変更することが出来ますが、デフォルトで最適なバージョンが選択されているので、分かる人以外は変更するべきではありません。
ダウンロードしたら解凍します。
動画ファイルを修復する
実際にrecover_mp4とffmpegを用いて動画ファイルを修復していきましょう。動画ファイルの修復ではコマンドプロンプト・Windows PowerShellのどちらかを使用します。
コマンドプロンプトを使用する場合、カレントディレクトリの変更など少しハードルの高いコマンド操作が必要(コピーペーストだけでは難しい)なため、今回はWindows PowerShellを使用します。
ファイルパス・フォルダパスについて理解している方は移動させる必要はありません。
下記コマンドを入力し、動画ファイルが破損しているかチェックします。
.\recover_mp4.exe 動画ファイルパス --analyze
動画ファイルパスはそれぞれ置き換えてください。video.mp4だと以下のようになります。
.\recover_mp4.exe video.mp4 --analyze
次に下記コマンドを実行します。
.\recover_mp4.exe video.mp4 result.h264 result.aac --ambarella
この処理は少し動画変換処理が行われるため、再生時間が長ければ長いほど時間がかかります。
続いて下記コマンドでffmpegを使って動画を修復していきます
.\ffmpeg -r 60000/1001 -i result.h264 -i result.aac -bsf:a aac_adtstoasc -c:v copy -c:a copy result.mp4
完全修復できず動画の一部が飛んでいることもありますが、飛んでいる箇所は修復不可能な再生箇所なので、そちらについては諦めるしかありません。