有什么好方法可以批量检查媒体文件的完整性?

有什么好方法可以批量检查媒体文件的完整性?

我有大约 15000 个图片、视频和音频文件(还有一些其他文件),我一直通过 FTP 从手机来回传输。经过多次尝试,我发现其中一些文件已损坏。这没什么大不了的,因为所有媒体都已备份在 Google Photos 或其他方式上。

问题是文件集(本地和备份)并不相同,尝试比较校验和会非常麻烦。最好的方法似乎是运行一些扫描仪来找到这些损坏的文件,然后手动下载它们的副本。

我确实搜索了好一阵子,但还是没能找到合适的工具。我最接近的尝试是这个 python 脚本在 Github 上,但我从来没有让它工作过,似乎超出了我的能力范围。

顺便说一句,我用的是 Windows 10。

非常感谢任何建议

谢谢

答案1

我刚刚解决了我所遇到的所有问题,以下是解决方法:

为了检查媒体完整性, 我不得不:

  1. 使用这叉来自 garygan89;
  2. 在 Python 2 和 3 上都拥有所有必需的模块,因为原始模块应该是为 2 和 fork 编写的,以便转换为 3,所以我不需要解决每个问题,只需要同时满足两者的要求;
  3. 使用这些 Python Wheels安装 Pillow-SIMD。这是需要解决的最大问题,因为在 Windows 上从源代码编译它至少非常麻烦;
  4. 安装 ffmpeg-python 模块作为要求。它没有列在项目的 readme.md 中,但它列在单独的要求文件中;
  5. 对于 ffmpeg 的东西,指定所有开关来扩大它的输出;
  6. 对超时和线程的可选值进行大量实验。我的最佳选择似乎是 75 个线程左右,超时至少为 120(处理大文件时为 400);
  7. 使用威兹树和 robocopy 将该工具应用于较小的文件组,该工具有助于了解文件夹中的文件扩展名,然后将其移动到“已传递”文件夹。

对于 PDF,我没有从 check-media-integrity 中获得所需的信息,因此我使用了PDFtk,它可以一次加载/读取几十个文件,如果损坏,则会显示错误消息。

还有一些没有扩展名的文件,我只是在 Notepad++ 上打开它们,并试图根据其中的标题和文件大小进行猜测。找到了一些 .mp4、.pdf、.pgn、.png、.jpeg 和 .apk 文件,在正确重命名后,它们几乎都可以正常工作。

利用所有这些,我能够解析我的文件集(我猜我同时将其增加到 25 000 个)并找到大约 50 个损坏的文件,然后按照我想要的方式替换它们。

相关内容