是否有一个不需要 GUI 的视频模糊重复查找器?

是否有一个不需要 GUI 的视频模糊重复查找器?

我目前正在尝试以最小的更改消除重复的视频。这些可能是编码略有不同、分辨率较低或只是更改了元数据。这些视频位于复杂的文件夹结构中,因此只能删除某些文件夹中的重复视频。

因此,我正在寻找一个适用于 Linux 的工具,它只返回找到的重复项的列表,然后我自己用一个简单的脚本进行处理。该工具必须只能与 CLI(或作为库)一起使用,因为我想直接在服务器上运行它,并且只让它自动比较某些子文件夹以节省时间(整个服务器将花费太长时间)。

到目前为止我唯一发现的是杜佩古鲁视频重复查找器。遗憾的是它们都是 GUI 程序。

目前我正在使用 jdupes 删除所有字节完美副本。但这很容易被更改的元数据或不同的格式(例如 webm、m4v 与 mp4)所愚弄。

有谁知道这样的工具吗?或者这是我需要自己写的东西吗?

答案1

对于简单的精确重复查找器,我更喜欢使用fdupes工具。

您也可以使用自己的脚本,但您对重复的描述不够严格,无法提供可靠的答案。现在我会坚持使用包装ffprobe中的ffmpeg产品。看看这个命令:

 ffprobe  -hide_banner -loglevel quiet -print_format json -sexagesimal -show_format -show_streams YOUR_FILE.mp4

选项说明:

  • -hide_banner- 隐藏横幅,我们不需要它来处理文件
  • -log_level quiet- 其他消息也不重要
  • -print_format json- JSON输出格式允许我们使用JSON处理器轻松提取我们感兴趣的数据
  • -sexagesimal- 时间输出格式HH:MM:SS.MICROSECONDS
  • -show_format- 提供有关文件格式的附加信息
  • -show_streams- 提供有关音频和视频流的信息

这提供了一些有趣的信息。您可以首先使用以下命令提取一些键,例如 format.duration jq

ffprobe  -hide_banner -loglevel quiet -print_format json -sexagesimal -show_format -show_streams YOUR_FILE.mp4 | jq '$.format.duration'

相同的电影应该具有相同的持续时间。

将它们分组到“由持续时间决定的可能重复”目录后,您可以在特定时刻截取某些帧的屏幕截图:

ffmpeg -i YOUR_FILE.mp4 -ss 00:00:01.000 -vframes 1 output.png

这将保存电影开始第一秒的任何图像的屏幕截图(可能我更喜欢多个时间戳)。

然后是最终缩放图像并使用 ImageMagick 比较它们的相似性的问题(https://imagemagick.org/script/compare.php)或其他类似工具

祝你好运!

相关内容