FPVドローンレーサーにGoProを装着して撮影をしている人は、クラッシュなどにより予期せぬGoProの電源オフを経験したことがあるかと思います
その場合は、撮影データは破損してしまい再生できない状態になってしまっているかと思います
何故ならMP4のヘッダデータは撮影が終わってから書き出されるため記録途中に中断してしまうとヘッダデータが破損しているからです
何度かこの作業を行う必要があったため、備忘録を兼ねて復旧方法を紹介します
いくつか方法があるようですが、自分が試した中で一番簡単だった方法はrecover_mp4というコマンドとffmpegを使う方法です
recover_mp4はWindows用のコマンドのため、Windowsマシンが必要になります
ffmpegはWindowsもMacも対応しているのでどちらでも大丈夫です。私は既にMacにffmpegをインストールしているので、ffmpegの処理はMacで行なっています
まず、記録データの解析をします。これには、破損していない記録データが必要です。再生できる適当なファイルで問題ないです。もちろん、同じ録画機器(私の場合はGoPro)のファイルを使います
recover_mp4.exe in_good_similar.mp4 --analyze
正しく実行されれば、次に実行するべきコマンド2つが出力されますので、その通り行います。これらのコマンドはサンプルなのか?実際に解析した結果による最適化されたコマンドなのかは明らかではないですが、とりあえず出力された通りに実行するとファイルが復旧されました
まずは再度recover_mp4
recover_mp4.exe corrupted_file 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
これで再生可能な result.mp4 が出来上がります
ただ最後数秒は失われるようなので、肝心なクラッシュ時の映像はサルベージできないようです。これはおそらくそもそも記録媒体に無いデータですよね?GoProが録画データをある間隔で記録媒体に移していると思うので
それではサルベージしたクラッシュログをお楽しみください
コメントを残す