web-dev-qa-db-ja.com

メディアファイルの整合性をバッチチェックする良い方法は何ですか?

携帯電話からFTP経由で前後にバウンスしている15000の画像、ビデオ、オーディオファイル(およびその他のいくつか)があります。何度も繰り返した後、私はそれらのいくつかが破損していることに気づきました。すべてのメディアはGoogleフォトまたはその他の方法でバックアップされるため、これは大したことではありません。

問題は、ファイルのセット(ローカルとバックアップ)が同じではなく、チェックサムを比較するのが非常に面倒になることです。最善のアプローチと思われるのは、スキャナーを実行してこの少数の壊れたファイルを見つけ、それらのコピーを手動でダウンロードすることです。

かなり検索しましたが、適切なツールを見つけることができませんでした。私の最も近い試みは this python script on Githubですが、動作させることはできませんでした。私より上にあるようです。

ところで、私はWindows10を使用しています。

任意の提案は大歓迎です

ありがとうございました

1
Fabio Freitas

私は自分が持っていたもののすべての問題を解決しました。これがトリックをしたものです:

check-media-integrity の場合、次のことを行う必要がありました。

  1. 使用 このフォーク garygan89から;
  2. Python 2と3の両方に必要なすべてのモジュールを用意します。オリジナルは2とフォーク用に記述されているため、3に変換するため、すべての問題を把握する代わりに、両方の要件がありました。
  3. これらのPython Wheels を使用してPillow-SIMDをインストールします。Windowsのソースからコンパイルするのは少なくとも非常に面倒なので、これは解決すべき最大の問題でした。
  4. 要件としてffmpeg-pythonモジュールをインストールします。プロジェクトのreadme.mdには記載されていませんが、別の要件ファイルに記載されています。
  5. Ffmpegのものについては、出力を広げるためにすべてのスイッチを指定します。
  6. タイムアウトとスレッドのオプション値を試してみてください。私の最適なものは、約75スレッド、少なくとも120のタイムアウト(大きなファイルを処理する場合は400)のようでした。
  7. WizTree とrobocopyを使用して、ツールをファイルの小さなグループに適用します。ツールは、フォルダー内のファイル拡張子を確認し、それを「渡された」フォルダーに移動するのに役立ちます。

PDFの場合、check-media-integrityから目的が得られなかったため、 PDFtk を使用しました。これは、一度に数十のファイルをロード/読み取りでき、壊れている場合はエラーメッセージを表示します。 。

拡張子のないファイルもいくつかあり、Notepad ++で開いて、そこにあるヘッダーとファイルサイズから推測しようとしました。いくつかの.mp4、.pdf、.pgn、.pngが見つかりました。 .jpegファイルと.apkファイルは、適切に名前を変更した後、ほとんどすべて正常に機能しました。

これらすべてを使用して、ファイルセットを解析し(その間に、25,000に増やしたと思います)、約50の破損したファイルを見つけて、必要に応じてそれらを置き換えることができました。

0
Fabio Freitas