明日は月曜日なので、我が家は本日行って、子どもたちの豆まきを撮影していた。最終的にはサバイバルゲームになり、猫もそれに参戦するというもう二度と取れない貴重な映像となったわけだが...撮影中にスマホがフリーズ!!!フリーズしてしまって、撮影続行できない!!急遽、妻のスマホに切り替えたは良いものの、さっきまで撮影していた映像はぶっ壊れたファイルになってしまった。スマホが再起動から帰ってきても再生できなくなってしまった。撮影途中でフリーズしてしまった動画ファイルを復元してみるというわけで、今日はこの壊れてしまったファイルを復元してみよう。復元する環境は、ArchLinux。ほかのLinuxでもほぼ似たようなパッケージを入れれば同じ手順で復元は可能だろう。WindowsやMacでも、これから書くことを読めば復元のヒントとなる方法がわかるかもしれない。自分がやった方法だが、まずは壊れたファイルをパソコンに転送してみた。使っているスマホはAndroidで、動画ファイルはmp4VLCPlayerなどで再生をしてみたが、うんともすんともいわない。そこでffmpegというコマンドをつかって、ファイルの情報がどうなっているのか確認をすることにした。kowareta.mp4上記のように該当のファイルを指定して、コマンドを実行すると、ファイルの情報が出る。すると以下の情報が出てきた。inputMP4は木構造でデータが構築されていて、その最小単位をアトムという。moovアトムとは、メタデータが格納されている部分らしい。そこが破損しているから再生ができないそうだ。そりゃ最後にちゃんと終了していなかったから最終的なデータとかが書き込まれていないんだろうな。ファイル自体は300MBくらいあるので、映像データとしてはちゃんと作られてはいる可能性がある。foundが出た場合の対処untruncというコマンドで、moovアトムをどうにかできるらしいArchだったらAURでuntrunc-gitというパッケージを指定すればインストールできる。公開されているので、他の環境だったら直接ビルドをするのがいい。正常なmp4ファイルが必要らしいので、適当にスマホで動画を撮影してパソコンに転送しておく。kowareta.mp4正常なmp4ファイルと壊れたmp4ファイルをコマンドに渡すと、正常な方からメタデータを解析して、壊れた方を読み込みうまい具合に解釈して復元をするらしい。すると、kowareta.mp4_fixed.mp4というファイルができるので、これをVLCなどで再生してみるとちゃんと見れると思う。自分はそのファイルを直接グーグルフォトにアップロードして、スマホで見るれることを確認した。哲学科卒業のIT業界の末端にいるお兄さん。好きなディストロはArchLinux。はてなブックマークとtwitterのリンク付きツイートはいつも読んでいます。一言伝えたい場合はTwitterにリプライください。Themehaus当サイトではCookieを利用します。閲覧を続けた場合Cookieの使用に同意したことになります。