破損した動画(.MP4形式)を無料で修復する方法(ただしWindows限定・コマンドプロンプト使用)

SDカードから誤消去した.MP4形式の動画を復元したけれど破損していた・・なんとか無料で修復できないか・・Windows限定かつコマンドプロンプト使用ですが、無事修復できましたのでその方法をシェアします。ターミナル苦手なmac使いでも復元できるように説明しています。

857
views

.MP4形式の動画を修復する方法:まずはVLC Media Playerを使う

レイルカメラのカメラを毎日収集しているのですが、中国製トレイルカメラに付属していたSDカードを使用したためか、突然ファイルが全部消えました(笑)Norton Utilitiesで削除ファイルを検索したところ無事復元はできたのですが、今回もまた動画が破損していました。

「.mp4 修復」で検索すると、例によって中国製ソフトが上位を占めています。が、これらは無視するとして(笑)・・・その検索結果によると、フリーの有名な動画再生ソフトのVLC Media Player に修復機能があるようですので、まずはそれを試してみます。↓こちらのサイトに詳しく方法が記載されています。

今回は上記サイトの方法では修復できなかったので、別の方法をつかうのですが、結局最後にVLC Media Playerでの修復・変換作業が必要になりましたので、インストールしていない方はダウンロードしておいた方がよいです。↓公式サイトはこちらです。

英語の情報サイトに記載されていた方法がほぼ完璧です

れでいろいろとWebをさまよったのですが、いろんなところで紹介されているクラウド上の修復サービスrestore.mediahttps://restore.media)はフリーと思わせておいて、最後のダウンロードで有償になるパターンなので近づかない方がよいです。自分の所はネット環境がADSLで、動画のアップロードに大変時間がかかったのですが、3時間くらいかかっていざダウンロードというときに9.9ドルの請求書が出てきてキレそうになりました(笑)

↑参照ファイルと修復ファイルの2つをアップロードして約3時間、やっと修復完了まできましたが・・
↑ダウンロードボタンを押すと、請求書の画面が(笑)200MB、1分のファイルの修復に9.99ドルだそうです

それで最後にたどり着いたのは↓ここです。Windows限定、かつ、コマンドプロンプト使用、ということで敬遠していたのですが、仕方がないのでじっくりと読み解いていって、その通りに作業したところ、うまく修復できました。英語が読める方はこちらのサイトを見ていただくと速いと思います。

自分のように英語はなんとなく読める程度の方、また、mac使いでコマンドプロンプトにアレルギーがある方は・・・以下に理解しやすいようにして記しておきますので、どうぞご参考になさってください。

なお、上記の英語サイトに行かれる方もご注意いただきたいのは、Windows環境や、VLC Media Playerでは再生できても、いざmacにもってくると、カクついて編集できない、という場合がある、ということです。自分の場合がそうでした。

これはVLC Media Playerで変換すると正常になりましたので、先にお伝えしておきます。

修復手順

1最初に必要なソフトをダウンロードします。

●recover_mp4
https://www.videohelp.com/software/recover-mp4-to-h264/old-versions#downloadold

上記サイトより、Download recover_mp4 1.92 Free をダウンロードします。

●ffmpeg
https://ffmpeg.org/download.html

上記サイトのGet the packagesの段落からwindowsアイコンをクリックします。すると、Windows PackegesとWindows Buildsという表示があらわれますので、そのBuildsをクリックします。次の画面で、Version は4.0.2などの数字、Architectureは使用されているWindowsのOSに依って選び(32bitか64bitか)、Linkingは Static を選択した上で「Download Build」をクリックします。

↑最初にデカデカと表示されるDownloadはクリックしない・・開発用のファイルがダウンロードされます
↑その下のGet the packagesでWindowsアイコンを選択、その下のBuildsをクリックする
↑次に表示される画面で、Versionは数字、Architectureは自分の環境の合わせ、LinkingはStaticを選択してダウンロードします。

2修復したい破損ファイルと、同じカメラの、同じ設定で撮影した「正常な動画」を用意します。この正常な動画の情報を参照して破損ファイルを修復します。なお、ファイル名は、後のコマンドプロンプトで入力が楽になるよう、短めの名前に変更しておきます。自分は「ref.mp4」としておきました。

3ダウンロードしたffmpegを解凍し、その中の「bin」フォルダの中に以下のファイルを全部入れちゃいます。こうしておくと、後のコマンドプロンプトでの作業が楽になります。

  • 修復したい破損ファイルすべて
  • 正常な動画「ref.mp4」
  • recover_mp4.exe(32bitな方は、recover_mp4_x86.exe をrecover_mp4.exeにリネームする)
※自分は面倒なので、SDカードに全部入れました。この場合SDカード内に修復ファイルが新たに生成されるので、容量に余裕のあるSDカードやUSBメモリ・外付けドライブを準備してそこに入れるとよいです。ここから先はそれを前提に話をします。
↑SDカードに全部入れてしまう。ffmpegフォルダの中のbinフォルダに実行ファイルや修復ファイル、参照用の正常な動画を全部入れます。なお、赤丸の英字はドライブレターですが、後で使うので覚えておきます。

4コマンドプロンプトを起動します。 スタートメニューの検索で「cmd」と入力すると「cmd.exe」が表示されるので、それをクリックします。すみません、以下Windows7での画面です。

53で準備したSDカード等の外付けドライブを読み込ませます。エクスプローラーでそのドライブレター(D:とかE:になっているはず)を確認しておきます。

 

6ここからは呪文の入力です。
最初に作業フォルダを、先ほどのSDカードなど外付けドライブのffmpeg/binフォルダに設定します。

cd /d D:¥ffmpeg¥bin

と入力します。

cdはカレントディレクトリの意味、/dはドライブの変更、以下はフォルダの場所を表しています。D:はドライブレターです。環境によって異なると思いますので、5で確認した英文字に書き換えます。

7次に、以下をコマンドプロンプト入力して、正常な動画ファイルの分析を行います。

recover_mp4.exe ref.mp4 --analyze

ref.mp4は自分が用意した正常な動画のファイル名です。必要であれば変更してください。

なお、これらの呪文は、メモ帳等に入力して、コマンドプロンプトには右クリックで「貼り付け」を行うと楽です。

↑コマンドプロンプトではCtrl+Vが使えないので、右クリックで対応します。

87の分析結果がコマンドプロンプト上に表示されていますので、その最後の方の2行をコピーし、メモ帳に貼り付けておきます。コピーはコマンドプロンプトではキーボードショートカットが使えないので、右クリックをして「範囲指定」を選んだ後、マウスでドラッグし、右クリックするだけでコピーされます。

98でコピーしたコマンドを順に実行します。
1を実行して、result.h264とresult.aacという中間ファイル2つを生成し、次に2を実行すると、先ほどの中間ファイル2つから、修復ファイルresult.mp4を生成します。

これらのコマンドについて

recover_mp4.exe corrupted_file result.h264 result.aac --ambarella

こちらは・・

corrupted_file ⇒ 修復したい破損ファイル名
result.h264 ⇒生成される中間ファイル(.h264ファイル)
result.aac ⇒生成される中間ファイル(.aacファイル)

–ambarella ⇒環境によって変わる

となっています。result.h264やresult.aacについては破損ファイルごとに多数生成されるので、自分は連番で001.h264と001.aacなどと、後でわかりやすいように中間ファイルのファイル名は同じ番号にしておきました

また、–ambarella は修復するカメラごとに変わりますので、上記をそのままコピペしないようにしてください。以下は私の環境の例です。

recover_mp4.exe IMG_0001.MP4 001.h264 001.aac --ambarella

上記を実行することで、binフォルダ内に001.h264と001.aacという中間ファイルが生成されます。

次に、もう一つのコマンド

ffmpeg.exe -r 30000/1001 -i result.h264 -i result.aac -bsf:a aac_adtstoasc -c:v copy -c:a copy result.mp4

こちらは・・・

30000/1001 ⇒ 環境によって変わるパラメーター
result.h264 ⇒ 先ほど生成した中間ファイル
result.aac ⇒ 先ほど生成した中間ファイル
result.mp4 ⇒ 生成される修復ファイル

となっていますので、これらも注意して自分の環境に合わせて変更します。以下は私の環境の例です。

ffmpeg.exe -r 30000/1001 -i 001.h264 -i 001.aac -bsf:a aac_adtstoasc -c:v copy -c:a copy 001.mp4

上記を実行すると、binフォルダ内に、修復されたファイル、001.mp4が生成され、修復作業は終了となります。

修復したい破損ファイルが複数ある場合は、同じコマンドプロンプトで継続して2つのコマンドの実行を繰り返します。破損ファイル名と中間ファイル名・修復ファイル名をメモ帳で書き換え、コマンドプロンプトに貼り付けして実行します。

これらをひたすら繰り返します。

↑1のコマンド実行後。次に2のコマンドを入力します。
↑2のコマンド実行後。これで修復ファイルが生成されました。

作業は以上です。

recover_mp4でも修復できなかった場合

recover_mp4を実行すると、破損ファイルはほぼ問題なく修復できるはずですが、自分のようにmacのQuick Time Playerなどで再生すると動画がカクつく場合は、最初の方で述べたとおり、VLC Media Playerで修復するとよいです。

やり方は特に難しくありません。

VLC Media Playerで「変換/保存」を選択します

修復したいファイルを選択し、変換/保存をクリックします。ファイルは、ドラッグアンドドロップで追加できます。

設定は、プロファイルを「Video – H.264 + MP3(MP4) 」にしておきます。出力ファイルについては、ファイル名に-convertedを付加、にチェックをつけておきます。つけないと上書きされてしまいます。開始をクリックすれば修復が始まります。

これで多分大丈夫だと思いますが・・もし修復できない場合は他の方法を考える必要があります・・

以上です。