見出し画像

ChatGPTと壊れた動画ファイル(moov atom not found)の修復【生成AIとYouTubeをはじめる4】

こんにちは、korbyです。
前回に引き続き、生成AIを利用しながらYouTubeをはじめる様子を書いていきたいと思います。

YouTube用の動画を撮影してきたのですが、一部の動画ファイルが壊れて再生できなくなっていました。

もう一度撮りに行くのも難しいので、いろいろ試した結果、何とか修復することができたので、今後のためにもその記録を残しておきます。

技術的な内容にはなっていますが、解決策を探す過程も書いてあるので、技術系に興味がなくてもなにかの参考になるかもしれません。

解決策だけを知りたい方は、目次から「最終的な解決策」に跳んでお読みください。

なお、使用しているPCは、Windows 11です。


動画ファイルの状況

スマートフォンで撮影した動画ファイルを、PCに移して再生しようとしたのですが、まったく再生できません。

ファイルのサイズからすると、動画自体は残っていそうです。

ただ、プロパティをみると、動画の情報がまったく入っていません。
どうやら、メタデータのほうが壊れているようです。

生成AI(ChatGPT)に相談

最近は、困ったことがあるとまず生成AIに相談するようになりました。
というわけで、今回も生成AIにどうすれば動画ファイルを修復できるか聞いてみました。

今回使用した生成AIはChatGPTです。
(問題が発生したとき、とっさに開くのはChatGPTなんですよね。)

問題の切り分け

まず、ChatGPTにした質問は、

mp4の動画が見られません
修復する方法を教えてください

です。

すると、

1. プレーヤーの問題
2. コーデックの問題
3. ファイルの破損
4. ファイル形式の問題
5. ブラウザやストリーミング問題(オンライン動画の場合)

と、問題を切り分けてくれました。
たしかに、何もわからない状況では、問題の切り分けをまっさきにすべきですよね。

破損したファイルの修復方法

ただ、今回は明らかにファイルの破損だったので、

ファイルが破損しているようです
無料で修復する方法はありますか

と聞きました。

すると、

1. VLC Media Playerを使って修復
2. オンラインツールを使用
3. FFmpegを使ってコマンドラインで修復
4. その他の無料ソフトウェア

という選択肢を挙げてくれました。

では、これらを試していくことにしましょう。

VLCメディアプレイヤーで修復できる?

まずは、VLCメディアプレイヤーでの修復です。

VLCメディアプレイヤーならば、普段から使っているので、それで修復できたらすごく楽です。

というわけで試してみたのですが、どうにもうまくいきません。

あきらめて次の手段を試すことにしました。

(今回はうまくいきませんでしたが、VLCメディアプレイヤー自体はとてもいいソフトです。軽いですし、ほとんどの形式の動画を再生できます。)

無料のオンラインツールで修復できる?

次は無料を謳っている動画修復ツールです。

いろいろありすぎてよくわかりませんが、とりあえず4DDiG File Repairというツールを使ってみました。
(このソフトの安全性については不明です。使用する際は自己責任でお願いします。)

ダウンロード版なら、有料だが修復は可能

その結果、オンライン版だとできなかったのですが、ダウンロード版では修復することができました。

ただし、それをダウンロードするためにはお金を払う必要があるということでした。
無料というのは「試すのが」無料なだけで、実際にダウンロードするのは有料。
よくあるパターンですね。

個人的に、こういったツールにあまりお金を払いたくありません。
ですから、有料ツールは最後の手段ということで、次の選択肢を試すことにしましょう。

ただ、修復することが技術的に可能だということはわかりました。
技術的に可能ならば、このオープンソースが進んだ世の中、無料で何とかする方法があるはずです。

FFmpegで修復できる?

続いて、コマンドラインで動画を操作するときによく使われる有名なフリーソフトウェア「FFmpeg」で修復するという方法を試していきましょう。

このソフトウェアは、画質の変換やタイムラプスの生成などで使ったことがありますが、スペックが高くないPCでも結構早く処理ができます。

インストールも、解凍したファイルを適当な場所に置き、パスを通すだけなので簡単です。
(わからなければ、ChatGPTに「Windowsにffmpegをインストールしたい」などと聞けば教えてくれます。)

再生できない原因が判明!

さっそくChatGPTが作ってきたコマンドをターミナルに打ち込んでみます。

ffmpeg -i damaged_file.mp4 -c copy repaired_file.mp4

 すると、

moov atom not found

というエラーが出てきました。

なんと、動画が再生できない原因が判明しました!!

moov atomというものがないのが問題のようです。

moov atomが見つからないエラーを修復する

原因がわかったので、このエラーを解決する方法を探します。

FFmpegで再エンコードするも失敗

ChatGPTに聞いてみたところ、FFmpegを使用して再エンコードするように言われました。

しかし、言われたとおりにしてもうまくいきませんでした。

Googleで検索

というわけで、Google先生に聞いてみました。

すると、「untrunc」で修復できるという記事を見つけました。

Untrunc-guiで修復できる?

まずは、untrunc-guiというツールがあるようなので試してみます。

こちらの記事を参考にさせていただき、untrunc-guiを実行したのですが、エラーが出てうまくいきません。

GUIでできたら楽だったのですが…
こうなったら、次はuntrunc-guiのもとになったツール、本家「untrunc」を使用してみることにしましょう。

Untruncで修復

こういうツールは、下手にChatGPTなどに使い方を聞くよりも、READMEを読んだほうが正確で手っ取り早いので、README通りに進めていきます。

インストールするためのコマンド

Gitからインストールするコマンドは、次の通りです。

git clone --recurse-submodules https://github.com/ponchio/untrunc
cd untrunc/libav
./configure
make
cd ..
g++ -o untrunc -I./libav file.cpp main.cpp track.cpp atom.cpp codec_*.cpp codecstats.cpp codec.cpp mp4.cpp log.cpp -L./libav/libavformat -lavformat -L./libav/libavcodec -lavcodec -L./libav/libavresample -lavresample -L./libav/libavutil -lavutil -lpthread -lz -std=c++11
sudo install -vpm 755 ./untrunc /usr/local/bin/ 
which -a untrunc

このコマンドを見て、真っ先に気づくのは、Windowsでは動かせないということです。
たとえば、「configure」「make」というのは、Unix系で使われるものですね。
ですから、WindowsのPCで動かすには、何かしらのツールを導入する必要があります。

ChatGPTにWSLを勧められる

ここは、ChatGPTに聞きましょう。

すると、

1. WSL
2. Git Bash
3. MinGW/MSYS2

という選択肢が提示されました。

さらに、

特にWSLはWindows 10以降では最も便利で、他のLinuxコマンドもそのまま使えるので推奨されます。

とおすすめされたので、WSLで実行したいと思います。

WSLとは?

WSLとは、Windows Subsystem for Linuxの略で、Windows上でLinuxを使えるようにするものです。

インストール方法はChatGPTに聞けば教えてくれます。

WSLをインストールするとUbuntuというOSも自動的にインストールされるので、Ubuntuを使っていきます。

Ubuntuにuntruncをインストール

まずはおまじないを唱えてから、必要なパッケージをインストールしていきます。

sudo apt update
sudo apt upgrade
sudo apt install build-essential autoconf automake gcc make yasm pkg-config g++ zlib1g-dev

いろいろエラーを出しながら、最終的にはこのくらいのパッケージをインストールしました。
(環境によっては不要なものもあるかもしれません。)

それから、

./configure

を実行すると、パーミッションエラーが出たので、

 chmod +x ./configure

というコマンドで、権限を追加しました。

これでインストールが完了しました。

Ubuntuに動画ファイルをコピー

READMEを読むと、「壊れた動画ファイル」と「壊れていない動画ファイル」が必要と書いてあります。
「壊れていない動画ファイル」は、同じカメラで撮影した動画がいいようです。

というわけで、Ubuntuのほうに必要な動画ファイルをコピーしておきましょう。

ファイルのコピーは、エクスプローラーを開いて、ドラッグアンドドロップで行うことができます。
普段のコピペと同じです。
場所がわかればいいので、Linux/Ubuntu/homeにでも入れておきましょう。

Untrunc実行

Untruncをインストールした場所で、以下のコマンドを実行します。

./untrunc /path/to/working-video.m4v /path/to/broken-video.m4v

左が「壊れていない動画」のパス、右が「壊れた動画」のパスになります。
たとえば、動画をhomeディレクトリに置いた場合、

./untrunc /home/壊れていない動画.mp4 /home/壊れた動画.mp4

となりますね。

例では拡張子がm4vになっていますが、mp4でも大丈夫でした。

これを実行すると、ファイル名の最後に「_fixed」とついた動画ファイルが生成されます。

この動画ファイルを再生してみたところ、動画を見ることができました!!

最終的な解決策

 以上まとめると、

  1. 再生できない動画があった場合、FFmpegで原因を特定する。

  2. 原因が「moov atom not found」だった場合、WSLで「untrunc」を実行する。
    (untruncはponchio氏のCUI版を使用する。)

ことで、動画を修復することができました。

まとめ

今回は、再生できない動画ファイルを修復しました。

前3回とはちがい、かなり技術系の話になってしまいました。

ただ、動画制作をしていると、動画ファイルが壊れてしまったという場面は出てくると思います。
そんな時でも、あきらめずに調べることで、修復できる可能性があるということをお伝えできたかと思います。

エラーが出たとき、とりあえずChatGPTなどの生成AIに聞けばとっかかりがつかめるようになったのは、かなり大きいと思います。

また、最初の環境構築は時間がかかりますが、次回からは、同じ原因で壊れた動画ファイルはWSLでこのコマンドを打つだけで修復することができます。

ここまでお読みいただきありがとうございました。
今回から動画を作っていくつもりだったのですが、思わぬトラブルが発生して時間をとられました。
次回こそは動画作成に入れると思うので、引き続き読んでいただけるとうれしいです。
よろしくお願いします。







いいなと思ったら応援しよう!