【Win/Mac】壊れたmp4動画ファイルをmp4fixer(無料)を使って復旧する

スポンサーリンク
mp4fixer

壊れたmp4ファイルを無料のツールmp4fixerを使って復旧する方法を紹介します。

私はパソコン上の操作を録画して、再現する手順を紹介する動画を作ることがありますが、録画中にシャットダウンするなどして録画していたファイルが壊れてしまうことがあります。

きちんと録画を停止してからシャットダウンすれば問題ないのですが、つい停止するのを忘れて、やってしまうことがあります…

”mp4 修復 無料”などでWeb検索すると、上位は有料ツールに誘導する記事で埋め尽くされていて、無料ツールで復旧する方法がまるで見つからずに困っている方も多いのではないでしょうか。(私もそうでした)

以下の動画に本記事の手順を実行した際の様子を記録していますので、よろしければ参考にしてください。

Windows版:

【Windows】壊れたmp4動画ファイルをmp4fixerを使って復旧する(修復の手順を紹介)
何らかの要因で破損して再生できなくなったmp4動画ファイルを無料ツールmp4fixerを使って復旧する方法を紹介します。Windows11のWSL2 Ubuntu 20.04LTS上で実行しています。同じ設定で録画した正常な動画ファイルに含...

Mac版:

【Mac】壊れたmp4動画ファイルをmp4fixerを使って復旧する(修復の手順を紹介)
何らかの要因で破損して再生できなくなったmp4動画ファイルを無料ツールmp4fixerを使って復旧する方法を紹介します。Intel Macで実行しています。同じ設定で録画した正常な動画ファイルに含まれる各種情報を用いて壊れた動画ファイルを修...

動作環境

WindowsとMac(Intel CPU)の両方で動作することを確認しています。

WindowsはWSL2という仮想環境にUbuntuをインストールした環境で実行しましたが、perlやgccが動作する環境であればWindowsネイティブ環境でも動くと思います。

使用OSWindows11/WSL2 Ubuntu 20.04LTSmacOS Moterey 12.4,
macOS Catalina 10.15.7
perl versionv5.30.0v5.30.3
gcc version9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)clang-1103.0.32.62

事前準備

事前準備の内容がWindowsとMacで異なりますので、個別に説明します。

Windows

Windowsメニューの虫眼鏡マークに”powershell”と入力するなどしてPower Shellを見つけ、管理者権限で立ち上げ、以下のコマンドでWSL2 Ubuntu-20.04 LTSをインストールします。

PS> wsl --install -d Ubuntu-20.04

本記事では、WindowsターミナルのPower Shellのコマンド実行には、コマンドの頭にPS>をつけて区別します。

PS>は入力する必要はありませんのでご注意ください。

PS>が付かないコマンド表記は、WSL2 Ubuntu 20.04のターミナルでの実行になります。

以下のコマンドでWSL2 Ubuntuを起動します。

PS> wsl

ここからはWSL2 Ubuntuのターミナル上の操作になります。

git、ffmpeg、libfaad-devをインストールしておきます。

sudo apt-get update
sudo apt-get install git ffmpeg libfaad-dev 

Mac

HomeBrewをインストールしていない場合はインストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

ffmpeg、faad2をインストールしておきます。

brew install ffmpeg faad2

mp4fixerによる復旧

任意のディレクトリで以下のコマンドを実行することでmp4fixerをダウンロードし、できたディレクトリに移動します。

git clone https://github.com/bookkojot/mp4fixer
cd mp4fixer

音声変換に使用するaacfixerをコンパイルします。

gcc aac.c -L. -lfaad -lm -o aacfixer

以下のようにfixer.plの引数として、問題ないmp4ファイル(壊れたファイルと同じ設定で録画したもの)、壊れたmp4ファイルを指定して実行します。

perl fixer.pl <good_file.mp4> <bad_file.mp4> output

上記コマンドの最後の引数は、出力ファイルに付ける名称で、ここではoutputとしましたが、他の文字列でも構いません。

修復された映像ファイルoutput-out-video.h264、音声ファイルoutput-out-audio.rawが出力されます。

映像ファイルは以下のコマンドで再生確認できます。

ffplay output-out-video.h264

続いて、音声ファイルを変換します。

./aacfixer output-headers.aac output-out-audio.raw

最後に映像と音声を結合してmp4ファイルにします。

ffmpeg -i output-out-video.h264 -i output-out-audio.raw-pure.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output-out-video.mp4

これでできたoutput-out-video.mp4が最終的に復元されたmp4ファイルになります。

まとめ

録画の失敗で壊れてしまったmp4動画ファイルをmp4fixerを使って復旧することができました。

mp4fixerは、正常なmp4ファイルと壊れたmp4を入力として、正常な方から必要な情報を取り出して壊れたmp4を修復し、映像と音声を別のファイルとして生成します。

出力映像ファイル:output-out-video.h264
出力音声ファイル:output-out-audio.raw

音声は付属のツールで変換することで再生できるファイルになりました。

変換後音声ファイル:output-out-audio.raw-pure.wav

そして、最後にffmpegの機能で出力映像ファイルと変換後音声ファイルを結合して、動画ファイルを復旧することに成功しました。

復旧した音声入り動画ファイル:output-out-video.mp4

少し手間がかかりますが、高額な有料ツールを使わずに復元できたのは大変助かりました。

mp4fixerの作者の方に感謝です!

あとがき

今回の復旧の試行をしていた最初の段階で、VLCというツールを試したのですが、こちらは私のケースではうまく復旧できませんでした。

次に試したWondershare Repairitは、復旧に成功し、プレビューで動画の確認まではできました。ただ・・・

無料かと思って使ったのですが、復旧した動画をmp4に保存するには月7000円くらいの利用料を支払う必要があり、そこまで払いたくなかったので断念しました。

ところが、Wondershare Repairitの復旧の方法が、正常に録画したmp4と壊れたmp4の両方を入力して、正常な方から必要な設定を読み取るという仕組みで、ここにヒントを得て、この手法で復旧するフリーソフトがGitHubにあるはずと思い、検索して見つけたのが、今回紹介したmp4fixerでした。

もう一つGitHubで見つけたUntruncというツールも試したのですが、私の環境ではうまく復旧できませんでした。

壊れたmp4でお悩みの方の助けになれば幸いです。

書籍紹介

新しいLinuxの教科書
Linuxコマンドラインの使い方やシェルスクリプトの書き方、ファイルバージョン管理などの説明があり、これからLinuxで開発を始めたい方におすすめの入門書です。

参考文献

GitHub bookkojot/mp4fixer (https://github.com/bookkojot/mp4fixer

タイトルとURLをコピーしました