轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像
交易
充值流量¥8起我的订单
文档
工具
提交工单页面收录
ghcr.io/0x90d/vdf-web

ghcr.io/0x90d/vdf-web:83ce18691aa5813b0747667c8d2c22befbd0c9cf

ghcr.iolinux/amd6483ce18691aa5813b0747667c8d2c22befbd0c9cf大小: 240.64 MB更新于 2026年10月7日
让 AI 帮你使用轩辕镜像? · 展开查看说明 · 点击收起说明

如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这段话即可:

请先阅读并遵守:https://xuanyuan.cloud/agents.md

未读文档前不要生成 pull 命令或排错方案。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

Video Duplicate Finder

Video Duplicate Finder 是一款跨平台软件,可基于相似度查找硬盘中的重复视频(及图像)文件。与其他重复文件查找工具不同,本工具即使面对分辨率不同、帧率不同甚至带水印的重复文件,也能成功识别。

特性

  • 跨平台支持
  • 扫描速度快
  • 重扫描速度极快
  • 支持原生调用 ffmpeg 函数,进一步提升速度(可选)
  • 基于相似度查找重复视频/图像(可选择零成本启用 pHash 扫描)
  • 片段检测功能:可识别短视频是长视频中某一片段的情况(采用音频指纹技术)
  • 可选 AI 匹配:通过神经图像嵌入技术,可找到经典方法遗漏的经过裁剪、镜像、缩放和深度编辑的副本,无需音频即可定位长视频录制中被剪辑出的片段。该功能完全在本地运行。
  • 提供桌面端 GUI(支持 Windows、Linux、macOS)
  • 提供 Headless CLI,适用于脚本编写与自动化场景
  • 提供 Web UI,适用于远程/无桌面/NAS 使用场景
  • 提供 Docker 镜像,便于快速自行部署

片段检测

VDF 可以识别短视频属于长视频中某一片段的情况——例如从电影中截取的片段,或是从更长的录制内容中保存的剪辑。该功能通过音频指纹技术筛选候选文件,能够捕获常规视觉扫描遗漏的片段;默认情况下,每一个音频匹配结果都会通过比对匹配偏移位置处的帧进行视觉二次确认。

该功能作为常规视觉重复扫描之后的可选第二阶段运行,采用音频指纹流水线(类 Chromaprint 的色度提取 + 滑动窗口汉明相似度匹配)。匹配成功的文件对将显示在重复文件列表中,额外提供「片段偏移量」列,标注该片段在源视频中的起始位置。

启用方式

进入「设置 → 片段检测」,勾选「启用片段检测」,并可调整以下参数:

设置项默认值说明
最小片段/源视频占比(%)10片段时长占源视频时长的最小百分比,短于此阈值的片段将被忽略。
最小音频相似度(%)80滑动窗口指纹匹配可被接受的最小平均汉明相似度。
要求视觉确认启用拒绝那些在匹配偏移位置处的帧视觉特征不相似的音频匹配结果。
最小视觉相似度(%)85视觉确认阶段要求的最小帧相似度。

[!NOTE] 片段检测功能要求两个文件均包含音轨。不含音频的视频将被跳过——对于这类文件,请查看下文 AI 匹配部分介绍的视觉变体方案。

AI 匹配(可选)

VDF 还可通过神经图像嵌入(基于 ONNX Runtime 运行的 DINOv2 视觉模型)比对视频。经典比对机制仍为权威判定依据:AI 扫描仅会添加它判定置信度足够高的匹配对,因此启用该功能绝不会隐藏原本就能识别出的结果。它专门擅长处理基于像素的常规方法会遗漏的以下场景:

  • 变换副本:同一视频经过裁剪、镜像、缩放、加黑边、调色或以其他方式深度编辑后的版本。通过该方式找到的匹配对会在结果中标记有 AI 标识。
  • 视觉片段检测:通过匹配关键采样帧的一致时间偏移,识别长视频中包含的剪辑和片段。与上述基于音频的片段检测不同,该功能同样适用于无音频、静音或重新配音的视频。匹配结果同样会显示「片段偏移量」列。

启用方式

该功能的两个开关相互独立,默认均为关闭状态:

设置项所在位置默认值说明
AI 匹配(额外扫描阶段)设置 → 匹配关闭在选中的经典模式基础上,额外启用嵌入特征比对。
AI 相似度阈值(%)设置 → 匹配94两个文件的嵌入特征需要达到的最低相似度。若下调至约 92,可识别更多深度编辑的副本,但误判风险会小幅上升。
视觉检测部分重复片段(AI)设置 → 片段检测关闭对裁剪/嵌入的片段执行密集关键帧匹配,无需音频。
AI 帧命中阈值(%)设置 → 片段检测89单关键帧匹配命中所需的最低相似度;至少需要 4 个命中结果指向同一个时间偏移,两个视频才会被判定为匹配。如果出现无关视频被错误配对的情况,可提高该阈值。

CLI 对应参数:--ai-matching、--ai-percent、--ai-partial、--ai-partial-hit-percent

组件、隐私与资源占用

  • 首次使用时,VDF 会下载两个组件(一次性下载,总大小约 100 MB):来自微软官方发布渠道的 ONNX Runtime 库,以及经过固定 SHA256 完整性校验的嵌入模型。这两个组件会保存在扫描数据库的同级目录下。GUI 版本在下载前会弹出确认提示;CLI、Web 和 Docker 版本在启用 AI 选项时会自动完成下载。
  • 所有计算完全在本地 CPU 运行,无云服务依赖,无需注册账号,任何数据都不会上传:模型仅在您的本地设备上分析视频帧,全程不会外传。
  • 资源开销:哈希计算阶段平均每个文件耗时约 50 毫秒;嵌入特征会缓存到扫描数据库中(每个文件约占 2 KB),因此重扫描仍可保持高速。视觉片段检测功能将其关键帧缓存保存在独立的附属文件 DenseEmbeddings.db 中(每个视频约占 25 KB),该文件会自动执行清理。
  • 所有支持的发布平台(Windows、Linux x64/ARM64、macOS Intel 与 Apple Silicon)均提供该功能支持。

下载

每日构建版本:每次代码提交后,其附带的安装包都会自动重新构建并替换。

版本化正式发布(类似 v4.1.1 的标签)会不定期推送,发布后的文件内容后续不会再发生变更。包管理器以及需要固定下载版本的用户请选择这类正式版本。

[!NOTE] 偏好经典界面?4.1 版本推出了重新设计的全新界面,最终的经典 UI 构建版本仍可在 4.0.x 发布分支中获取,两个版本的数据库和配置完全双向兼容。

[!IMPORTANT] 从 3.x 版本升级:首次加载时,您的扫描数据库将自动完成迁移。下次扫描时,缓存的图像哈希会重新计算(图像处理后端已从 ImageSharp 切换为 FFmpeg);视频哈希不受影响。迁移完成后不建议降级回 3.x 版本,3.x 系列的最终构建版本仍可在 3.0.x 发布分支中获取。

各平台提供的安装包类型:

  • GUI-:桌面端应用
  • CLI-:命令行工具
  • Web-:自包含 Web 服务器

桌面端 GUI

系统要求

运行需要 FFmpeg 和 FFprobe。首次启动时 VDF 会尝试自动下载这两个组件。原生 FFmpeg 绑定要求使用 FFmpeg 8.x 共享库(非 master 分支版本)。

Windows

从 https://ffmpeg.org/download.html 下载最新的 FFmpeg GPL 共享包,将其中的 ffmpeg.exe 和 ffprobe.exe 解压至与 VDF.GUI.exe 相同的文件夹内、名为 bin 的子文件夹中,或是确保二者已加入系统 PATH。

Linux

sudo apt-get update && sudo apt-get install ffmpeg

随后执行以下命令启动程序:

chmod +x VDF.GUI
./VDF.GUI

可选操作:添加到应用程序菜单

Linux 压缩包内已包含 videoduplicatefinder.desktop 和 icon.png 文件,你可按照以下步骤将应用注册到桌面环境(GNOME、KDE、XFCE 等):

# 修改 Exec= 和 Icon= 路径,使其与你解压归档文件的实际路径匹配,示例:
sed -i "s|/opt/videoduplicatefinder|$(pwd)|g" videoduplicatefinder.desktop

# 为当前用户安装
mkdir -p ~/.local/share/applications
cp videoduplicatefinder.desktop ~/.local/share/applications/

完成后,该应用及其图标就会出现在你的应用启动器中。

macOS

brew install ffmpeg

解压下载的归档文件,其中将包含 Video Duplicate Finder.app,双击该文件即可启动程序。

[!NOTE] 如果 macOS 提示应用“无法打开,因为无法验证开发者”,请右键点击该 .app 文件并选择“打开”,随后确认操作即可,该步骤仅需执行一次。

如果系统仍然阻止程序启动(例如在 macOS 14+ / Tahoe 版本中提示“library load disallowed by system policy”),请执行以下命令清除隔离标记并对包内所有二进制文件执行临时自签名:

xattr -cr "Video Duplicate Finder.app"
codesign --force --deep --sign - "Video Duplicate Finder.app"

CLI(命令行界面)

CLI 版本适用于脚本编写、定时任务,以及无显示设备的无头服务器场景。

环境要求

与 GUI 版本完全一致:FFmpeg 和 FFprobe 必须已加入系统 PATH,或是放置在与 vdf-cli 二进制文件相同的目录下。

安装

从版本发布页下载以 CLI- 开头的归档包并解压。 在 Linux/macOS 系统中,需要先赋予二进制文件可执行权限:

chmod +x vdf-cli

使用方式

一步完成扫描与比对

vdf-cli scan-and-compare --include /path/to/media

扫描多个目录并将结果保存为 JSON

vdf-cli scan-and-compare \
--include /mnt/movies \
--include /mnt/series \
--exclude /mnt/movies/extras \
--format json \
--output results.json

通用参数选项

参数说明默认值
--include要扫描的目录(可重复指定多次)必填
--exclude需要排除的目录(可重复指定多次)无
--threshold哈希差异阈值5
--percent需要上报的最低相似度百分比96
--parallelism并行哈希计算线程数1
--include-images同时扫描图像文件关闭
--use-phash使用感知哈希算法关闭
--partial-clip-detection启用片段检测(音频指纹识别)关闭
--partial-clip-min-ratio片段与源文件的最小时长占比(取值范围 0.0–1.0)0.10
--partial-clip-similarity最低音频指纹相似度(取值范围 0.0–1.0)0.80
--ai-matching启用 AI 匹配流程(首次使用时会自动下载所需组件)关闭
--ai-percentAI 判定相似度阈值(取值范围 50–100)94
--ai-partial通过 AI 关键帧实现可视化片段检测(无需音频)关闭
--ai-partial-hit-percent单关键帧匹配阈值(取值范围 70–99)89
`--format jsontextcsv`
--output将结果写入指定文件,而非输出到标准输出stdout
--settings从 JSON 文件加载完整配置参数无

自动标记并删除重复文件

# 试运行 — 仅展示即将执行的删除操作,不会实际修改文件(默认行为)
vdf-cli scan-and-compare --include /mnt/media --action lowest-quality --dry-run

# 将重复文件移动到回收站(更安全)
vdf-cli scan-and-compare --include /mnt/media --action lowest-quality --delete

# 永久删除文件(请谨慎使用)
vdf-cli scan-and-compare --include /mnt/media --action lowest-quality --delete-permanent

可用的 --action 处理策略:

策略保留规则
lowest-quality每组文件中码率/分辨率最高的版本
smallest-file每组文件中体积最大的版本
shortest-duration每组文件中时长最长的版本
worst-resolution每组文件中分辨率最高的版本
100-percent-only仅对完全 100% 相同的文件组执行操作

[!NOTE] 不建议直接使用自动删除功能,请务必先通过 --dry-run 参数预览并核验结果。

Web UI

Web UI 以本地 Web 服务器形式运行,可通过浏览器访问,专为无头设备、NAS 设备和远程管理场景设计。

[!IMPORTANT] 安全提示:Web UI 具备密码保护机制,但仅适用于本地或 Docker 环境下使用,请勿将其暴露在公网互联网中。

身份验证

程序首次启动时,将自动生成随机密码并打印到控制台:

============================================
Web UI password: aB3xK9mQ7p
============================================

在浏览器中输入该密码即可完成登录,“记住我”Cookie 可保持 30 天的登录状态。 Docker 用户可执行 docker logs vdf-web 查看生成的密码。

环境变量说明
VDF_WEB_PASSWORD设置自定义密码,替代自动生成的密码
VDF_WEB_AUTH=false完全禁用身份验证机制

环境要求

必须安装 FFmpeg 和 FFprobe。非 Docker 环境下运行时,VDF.Web 会在首次启动时尝试自动下载这两个组件;你也可以通过系统包管理器手动安装,或将二者加入系统 PATH。

独立归档包安装

从版本发布页下载以 Web- 开头的归档包并解压。

在 Linux/macOS 系统中执行:

chmod +x VDF.Web
./VDF.Web

在 Windows 系统中执行:

VDF.Web.exe

随后在浏览器中打开 http://localhost:5000,输入控制台显示的密码即可登录。

如需修改服务端口,执行以下命令:

ASPNETCORE_URLS=http://+:8080 ./VDF.Web

Web 服务的配置和登录凭据存储路径如下:

  • Windows:%APPDATA%\VDF\
  • Linux:~/.config/VDF/(或 $XDG_CONFIG_HOME/VDF/)
  • macOS:~/Library/Preferences/VDF/

扫描数据库文件 ScannedFiles.db 会优先存储在与可执行文件同级的目录下(前提是该目录具备写入权限);若该目录不可写,则会自动回退到以下路径:

  • Windows:%LOCALAPPDATA%\VDF\
  • Linux:~/.local/state/VDF/(或 $XDG_STATE_HOME/VDF/)
  • macOS:~/Library/Application Support/VDF/

Docker(Web UI)

镜像名称:ghcr.io/0x90d/vdf-web 参考标签:latest

Docker 是在 NAS、家用服务器或任意 Linux 设备上运行 Web UI 的最简便方式。镜像内已预装 FFmpeg,无需单独安装。

环境要求

  • 已完成 Docker 安装

快速开始

docker run -d \
--name vdf-web \
-p 8080:8080 \
-v vdf-db:/root/.config/VDF \
-v vdf-state:/root/.local/state/VDF \
-v /path/to/your/media:/media:ro \
ghcr.io/0x90d/vdf-web:latest

标签 :latest 对应每日构建版本。若希望锁定到指定正式版本,可直接使用对应版本号,例如 ghcr.io/0x90d/vdf-web:4.1.1。

部署完成后在浏览器中打开 http://localhost:8080。执行 docker logs vdf-web 查看初始密码,输入密码即可登录。进入 Web UI 后,将 /media(或你实际挂载的媒体路径)添加为扫描目录即可。

如需自定义密码,可执行以下启动命令:

docker run -d \
--name vdf-web \
-p 8080:8080 \
-e VDF_WEB_PASSWORD=mysecretpassword \
-v vdf-db:/root/.config/VDF \
-v vdf-state:/root/.local/state/VDF \
-v /path/to/your/media:/media:ro \
ghcr.io/0x90d/vdf-web:latest

docker compose(长期部署推荐)

  • 从本仓库下载 docker-compose.yml 文件
  • 编辑该文件,添加你的媒体目录挂载配置,还可按需自定义密码:
environment:
- VDF_WEB_PASSWORD=mysecretpassword # 可选,若未设置仍可通过 docker logs 查看初始密码
volumes:
- /mnt/nas/movies:/mnt/nas/movies:ro
- /mnt/nas/series:/mnt/nas/series:ro
  • 启动服务:
docker compose up -d
  • 在浏览器中打开 http://localhost:8080 并输入密码(若未自行设置密码,请执行 docker logs 查看)。

项目仓库 README(补充说明)

Video Duplicate Finder

Video Duplicate Finder 是一款跨平台软件,可基于文件相似性在硬盘中查找重复的视频及图像文件。与其他查重工具不同,本工具还能识别分辨率、帧率不同,甚至带有水印的重复媒体文件。

功能特性

  • 全平台支持
  • 扫描速度快
  • 重扫速度极快
  • 可选择原生调用 FFmpeg 函数以进一步提升性能
  • 基于相似性识别重复视频/图像(支持零成本调用 pHash 进行扫描)
  • 片段检测功能:通过音频指纹识别短片段属于长视频的部分内容
  • 可选 AI 匹配:通过神经图像嵌入技术识别传统方法遗漏的裁剪、镜像、缩放、重度编辑的副本,无需音频即可定位长视频中的剪辑片段,全程 100% 本地运行
  • 提供桌面端图形界面(支持 Windows、Linux、macOS)
  • 支持无桌面 CLI 模式,便于脚本调用与自动化部署
  • 提供 Web UI,适配远程访问、无桌面设备及 NAS 场景
  • 内置 Docker 镜像,实现一键自托管部署

片段检测

VDF 可识别出短视频是长视频的部分片段场景,例如从电影中截取的片段、从长时长录像中保存的剪辑。候选片段通过音频指纹技术匹配,可捕捉到普通视觉扫描遗漏的片段;默认情况下,所有音频匹配结果都会通过对比对应偏移位置的帧内容,完成二次视觉核验。

该功能作为独立的第二阶段步骤,在常规视觉重复扫描完成后运行,采用音频指纹流水线(类 Chromaprint 色度特征提取 + 滑动窗口汉明相似度匹配)。匹配成功的文件对会显示在重复文件列表中,附带「片段偏移量」列,标注该片段在源长视频中的起始位置。

启用方法

进入 设置 → 片段检测,勾选启用片段检测,可按需调整以下参数:

设置项默认值说明
最小片段/源视频占比 (%)10片段时长占源视频总时长的最低百分比,短于该阈值的片段将被直接忽略。
最小音频相似度 (%)80滑动窗口指纹匹配可被接受的最低平均汉明相似度。
启用视觉核验开启若音频匹配结果在对应偏移位置的帧内容视觉相似度不达标,直接拒绝该匹配结果。
最小视觉相似度 (%)85视觉核验步骤要求的帧内容最低相似度。

[!NOTE] 片段检测功能要求两个文件都包含音频轨道,不含音频的视频会被跳过。此类场景可参考下文「AI 匹配」中的视觉片段检测方案。


AI 匹配(可选功能)

VDF 还可通过神经图像嵌入技术对比视频内容,底层基于 ONNX Runtime 运行 https://github.com/***research/dinov2 视觉模型。原有经典对比逻辑仍作为核心判定依据,AI 扫描仅会补充新增模型高置信度的匹配对,因此启用该功能绝不会覆盖或丢失你原本能得到的扫描结果。该功能专门针对基于像素对比的传统方法容易遗漏的场景优化:

  • 变换副本识别:可识别经过裁剪、镜像、缩放、加黑边、调色等重度编辑的同源视频,这类匹配结果会在列表中标识「AI」标签。
  • 视觉片段检测:通过对采样关键帧做一致性时间偏移匹配,识别长视频中包含的裁剪片段。与前文基于音频的片段检测不同,该方案完全支持无音频、静音或重新配音的视频。匹配结果同样会展示「片段偏移量」列。

启用方法

两个关联开关相互独立,默认均处于关闭状态:

设置项所在位置默认值说明
AI 匹配(附加扫描阶段)设置 → 匹配规则关闭在选中的经典匹配模式基础上,额外运行嵌入特征对比流程。
AI 相似度阈值 (%)设置 → 匹配规则94两个文件的嵌入特征需达到的最低相似度。可将数值调低至 92 左右,以更高的误判风险为代价,识别出更多重度编辑的同源副本。
AI 视觉片段检测设置 → 片段检测关闭启用密集关键帧匹配,无需音频即可识别被裁剪、内嵌在其他视频中的片段内容。
AI 帧命中阈值 (%)设置 → 片段检测89单关键帧判定为匹配所需的最低相似度;两个视频完成配对前,必须至少有 4 个命中帧指向同一个时间偏移。若出现无关视频被误配对的情况,可适当调高该数值。

CLI 对应参数:--ai-matching、--ai-percent、--ai-partial、--ai-partial-hit-percent。

组件说明、隐私特性与资源占用

首次使用时,VDF 会一次性下载两个组件(总大小约 100 MB):来自 https://github.com/microsoft/onnxruntime/releases 的 ONNX Runtime 库,以及嵌入模型(会基于固定的 SHA256 值完成完整性校验)。这两个组件会存储在扫描数据库的同级目录下。GUI 版本会在下载前弹出提示,而 CLI、Web 及 Docker 版本则会在启用 AI 相关选项时自动完成下载。

所有运算完全在你的本地 CPU 上运行。 无云服务依赖,无需注册账号,没有任何数据会被上传——模型会直接在你本机上分析视频帧,全程本地处理。

性能开销:哈希处理阶段单文件耗时约 50 毫秒;嵌入特征会被缓存在扫描数据库中(单文件约占 2 KB),因此后续重新扫描仍可保持高速。视觉片段检测功能会将关键帧缓存存储在独立的附属文件 DenseEmbeddings.db 中(单视频约占 25 KB),该文件支持自动清理。

支持所有正式发布的平台:Windows、Linux x64/ARM64、macOS Intel 芯片与 Apple Silicon 芯片设备。


下载

https://github.com/0x90d/videoduplicatefinder/releases/tag/4.1.x — 每次提交代码后,附件包都会自动重新构建并替换。

https://github.com/0x90d/videoduplicatefinder/releases(版本标签格式如 v4.1.1)会不定期发布,发布后对应的文件内容不会再发生变更。包管理器及所有需要固定下载版本的用户应使用这类正式发布包。

偏好经典界面? 4.1 版本引入了重新设计的新界面。最终保留经典 UI 的构建版本仍可在 https://github.com/0x90d/videoduplicatefinder/releases/tag/4.0.x 获取,两个版本的数据库和配置文件完全双向兼容。

从 3.x 版本升级: 首次启动加载时,扫描数据库会自动完成迁移。后续扫描时缓存的图片哈希会重新生成(图片处理逻辑已从 ImageSharp 切换为 FFmpeg),视频哈希则不受影响。迁移完成后不建议降级回 3.x 版本。最后一个 3.x 版本的构建包可在 https://github.com/0x90d/videoduplicatefinder/releases/tag/3.0.x 获取。

各平台提供的安装包类型:

  • GUI- — 桌面端图形应用
  • CLI- — 命令行工具
  • Web- — 独立封装的 Web 服务器

桌面端 GUI

环境要求

运行依赖 FFmpeg 和 FFprobe。首次启动时 VDF 会尝试自动下载这两个组件。原生 FFmpeg 绑定要求使用 FFmpeg 8.x 共享库(不能使用 master 分支版本)。

Windows

从 https://ffmpeg.org/download.html 下载最新的 FFmpeg GPL 共享包。 将解压得到的 ffmpeg.exe 和 ffprobe.exe 放到与 VDF.GUI.exe 相同的目录下,或放入该程序同级的 bin 子文件夹中,也可将二者所在路径添加到系统 PATH 环境变量中。

Linux

sudo apt-get update && sudo apt-get install ffmpeg

完成后运行程序:

chmod +x VDF.GUI
./VDF.GUI

可选:将程序添加到应用菜单

Linux 压缩包中已包含 videoduplicatefinder.desktop 和 icon.png 文件。如需在 GNOME、KDE、XFCE 等桌面环境中注册该应用,执行以下操作:

# 修改 Exec= 和 Icon= 路径,与你解压文件的实际路径匹配,例如:
sed -i "s|/opt/videoduplicatefinder|$(pwd)|g" videoduplicatefinder.desktop

# 为当前用户安装注册
mkdir -p ~/.local/share/applications
cp videoduplicatefinder.desktop ~/.local/share/applications/

完成后该应用就会带着图标出现在桌面启动器中。

macOS

brew install ffmpeg

解压压缩包,其中包含 Video Duplicate Finder.app,双击即可启动。

如果 macOS 提示“无法打开该应用,因为无法验证开发者”而阻止运行,请右键点击该 .app 文件选择 打开,再在弹出窗口中确认即可,该操作仅需执行一次。

如果系统仍拒绝运行应用包(例如 macOS 14+ / Tahoe 版本提示“系统策略禁止库加载”),请执行以下命令清除隔离标记并对包内所有二进制文件执行临时自签名:

xattr -cr "Video Duplicate Finder.app"
codesign --force --deep --sign - "Video Duplicate Finder.app"

CLI(命令行工具)

CLI 版本适用于脚本调用、定时任务,以及没有显示器的无头服务器场景。

环境要求

与 GUI 版本一致:必须确保 FFmpeg 和 FFprobe 在系统 PATH 中,或与 vdf-cli 二进制文件存放在同一目录下。

安装

从 https://github.com/0x90d/videoduplicatefinder/releases/tag/4.1.x 下载对应平台的 CLI- 安装包并解压。

在 Linux/macOS 环境下,需要为二进制文件添加可执行权限:

chmod +x vdf-cli

使用说明

单步完成扫描与比对

vdf-cli scan-and-compare --include /path/to/media

扫描多个目录,并将结果保存为 JSON 格式

vdf-cli scan-and-compare \
--include /mnt/movies \
--include /mnt/series \
--exclude /mnt/movies/extras \
--format json \
--output results.json

常用选项

标志位说明默认值
--include 指定要扫描的目录,支持多次添加必选参数
--exclude 指定要排除的目录,支持多次添加无
--threshold 哈希差异阈值5
--percent 判定为重复需报告的最低相似度百分比96
--parallelism 并行哈希处理线程数1
--include-images同时扫描图片类文件关闭
--use-phash使用感知哈希算法关闭
--partial-clip-detection启用片段检测(基于音频指纹)关闭
--partial-clip-min-ratio 片段与源视频的最小时长比例(取值范围 0.0–1.0)0.10
--partial-clip-similarity 音频指纹的最低相似度要求(取值范围 0.0–1.0)0.80
--ai-matching启用 AI 比对校验(首次使用时会自动下载所需组件)关闭
--ai-percent AI 判定相似度阈值(取值范围 50–100)94
--ai-partial基于 AI 关键帧的视觉片段检测(无需依赖音频)关闭
--ai-partial-hit-percent 单关键帧匹配判定阈值(取值范围 70–99)89
--format json|text|csv输出格式text
--output 将结果写入指定文件而非输出到标准输出标准输出
--settings 从 JSON 文件加载完整配置项无

自动标记并删除重复文件

# 试运行——仅展示将会执行的删除操作,不会实际修改文件(默认行为)
vdf-cli scan-and-compare --include /mnt/media --action lowest-quality --dry-run

# 将重复文件移动到回收站(更安全的选项)
vdf-cli scan-and-compare --include /mnt/media --action lowest-quality --delete

# 永久删除文件(请谨慎使用)
vdf-cli scan-and-compare --include /mnt/media --action lowest-quality --delete-permanent

可用的 --action 处理策略:

策略保留规则
lowest-quality每组重复文件中保留码率/分辨率最高的文件
smallest-file每组重复文件中保留体积最大的文件
shortest-duration每组重复文件中保留时长最长的文件
worst-resolution每组重复文件中保留分辨率最高的文件
100-percent-only仅对完全 100% 一致的文件组执行操作

[!NOTE] 不推荐直接使用自动删除功能。请务必先使用 --dry-run 参数预览并核对结果,确认无误后再执行后续操作。


Web UI

Web UI 以本地 Web 服务器形式运行,你可以直接通过浏览器访问使用。该版本专为无头设备、NAS 设备以及远程管理场景设计。

[!WARNING] 安全提示:本 Web UI 已启用密码保护,但仅设计用于本地或 Docker 环境,请勿将其暴露在公网互联网中。

身份认证

首次启动时,系统会生成一个随机密码并输出到控制台:

============================================
Web UI password: aB3xK9mQ7p
============================================

在浏览器中输入该密码即可登录,"记住我" Cookie 会保持登录状态 30 天。

Docker 用户: 执行 docker logs vdf-web 即可查看生成的密码。

环境变量说明
VDF_WEB_PASSWORD自定义密码,替代自动生成的随机密码
VDF_WEB_AUTH=false完全禁用身份认证功能

系统依赖

程序运行要求预先安装 FFmpeg 和 FFprobe。在非 Docker 环境下首次启动时,VDF.Web 会尝试自动下载这两个组件,你也可以通过系统包管理器手动安装,或将其可执行文件路径加入系统 PATH 环境变量。

自包含归档安装

从 https://github.com/0x90d/videoduplicatefinder/releases/tag/4.1.x 下载对应的 Web 版本归档包并解压。

在 Linux/macOS 系统上执行:

chmod +x VDF.Web
./VDF.Web

在 Windows 系统上执行:

VDF.Web.exe

随后在浏览器中打开 **http://localhost:5000**,输入控制台显示的密码即可使用。

如需修改服务监听端口:

ASPNETCORE_URLS=http://+:8080 ./VDF.Web

Web 配置和登录凭据存储路径如下:

  • Windows:%APPDATA%\VDF\
  • Linux:~/.config/VDF/(也可使用 $XDG_CONFIG_HOME/VDF/)
  • macOS:~/Library/Preferences/VDF/

扫描数据库文件(ScannedFiles.db)的存储规则为:如果程序所在目录可写入,则直接保存在该目录下;否则自动回落至以下路径:

  • Windows:%LOCALAPPDATA%\VDF\
  • Linux:~/.local/state/VDF/(也可使用 $XDG_STATE_HOME/VDF/)
  • macOS:~/Library/Application Support/VDF/

Docker 部署(Web UI)

通过 Docker 是在 NAS、家庭服务器或任意 Linux 设备上运行 Web UI 的最简单方式,镜像中已内置 FFmpeg,无需额外单独安装。

前置要求

  • 已安装 https://docs.docker.com/get-docker/

快速启动

docker run -d \
--name vdf-web \
-p 8080:8080 \
-v vdf-db:/root/.config/VDF \
-v vdf-state:/root/.local/state/VDF \
-v /path/to/your/media:/media:ro \
ghcr.io/0x90d/vdf-web:latest

标签 :latest 对应每日构建版本。如果你希望固定使用某一个正式版本,可直接替换为对应版本号,例如 ghcr.io/0x90d/vdf-web:4.1.1。

启动后在浏览器中打开 **http://localhost:8080**,执行 docker logs vdf-web 查看初始密码并输入完成登录。进入 Web UI 后,将挂载的 /media(或你自行配置的其他挂载路径)添加为扫描目录即可。

如需自定义密码,可执行以下命令:

docker run -d \
--name vdf-web \
-p 8080:8080 \
-e VDF_WEB_PASSWORD=mysecretpassword \
-v vdf-db:/root/.config/VDF \
-v vdf-state:/root/.local/state/VDF \
-v /path/to/your/media:/media:ro \
ghcr.io/0x90d/vdf-web:latest

docker compose 部署(长期部署推荐)

  1. 从本代码仓库下载 docker-compose.yml 文件。
  2. 编辑该文件,添加媒体目录的挂载配置,也可按需自定义密码:
environment:
- VDF_WEB_PASSWORD=mysecretpassword # 可选配置项,不配置则可从 docker logs 中查询密码
volumes:
- /mnt/nas/movies:/mnt/nas/movies:ro
- /mnt/nas/series:/mnt/nas/series:ro
  1. 启动服务:
docker compose up -d
  1. 在浏览器中打开 **http://localhost:8080**,输入对应密码登录即可(未自定义密码时可查看 docker logs 输出获取随机密码)。
  2. 如需升级到最新镜像版本,执行以下命令:
docker compose pull && docker compose up -d

挂载卷参考

挂载卷路径用途说明
/root/.config/VDF存储配置文件(web-settings.json)和登录凭据,此处建议挂载命名卷,可保证容器升级过程中配置信息不丢失
/root/.local/state/VDF存储扫描数据库(ScannedFiles.db),此处建议挂载命名卷,可保证容器升级过程中已计算的文件哈希数据不丢失
自定义媒体路径挂载所有你需要执行扫描的媒体目录,推荐使用只读挂载模式(:ro)保障数据安全

补充说明

  • 容器镜像同时支持 linux/amd64 和 linux/arm64 架构,可适配树莓派、ARM 架构 NAS 等设备。
  • 镜像已发布至 https://github.com/0x90d/videoduplicatefinder/pkgs/container/vdf-web,每一次代码提交后都会自动更新镜像。

截图(内容已过时)

许可证

Video Duplicate Finder 采用 AGPLv3 许可证发布。

可选 AI 组件会在首次使用时单独下载,各自遵循独立的许可证规则:ONNX Runtime 采用 MIT 许可证,DINOv2-small 嵌入模型采用 Apache-2.0 许可证。二者均未随发布版本的二进制文件一同打包,也未与程序二进制文件做链接。

鸣谢 / 第三方组件

  • https://github.com/AvaloniaUI/Avalonia
  • https://github.com/Actipro/Avalonia-Controls
  • https://github.com/Ruslan-B/FFmpeg.AutoGen
  • https://github.com/Cysharp/MemoryPack
  • https://github.com/wo80/AcoustID.NET:用于片段检测的音频指纹提取流程(包含 Chromaprint 风格色度特征提取、FIR 平滑处理和指纹编码逻辑)衍生自该库,遵循 LGPL 2.1 许可证
  • https://github.com/microsoft/onnxruntime(Microsoft,MIT 许可证):为可选 AI 匹配功能提供推理引擎支持

编译构建

  • 依赖 .NET 10.x
  • 推荐使用 Visual Studio 2022 或更高版本进行开发构建

贡献指南

  • 每一项新增功能或问题修复请单独提交 Pull Request,请勿将多个改动合并到同一个 PR 中
  • 若 PR 未对应已存在的 Issue,请在 PR 描述中清晰说明本次改动的具体内容
  • 涉及较大规模改动的 PR,请先提交 Issue 进行讨论,确认方案后再提交正式 PR

轩辕镜像配置手册

按平台快速找到配置文档

一键安装

一键安装 Docker

Linux Docker 一键安装

AI

用 AI 使用轩辕镜像

agents.md · AI 对话 · 提示词

Docker

登录仓库拉取

登录认证 · 私有仓库

专属域名拉取

免登录 · 高速拉取

Linux

Docker 镜像配置

Windows / Mac

Docker Desktop 配置

MacOS OrbStack

OrbStack 容器

Apple Container

macOS 原生容器

Docker Compose

Compose 项目配置

NAS

群晖

Synology 配置

飞牛

fnOS 镜像配置

绿联

绿联 NAS

威联通

QNAP 配置

极空间

极空间 NAS

Unraid

Unraid NAS

企业仓库

其他仓库

ghcr · Quay · nvcr

Harbor 镜像源

Proxy Repository 对接

Portainer 镜像源

Registries 配置

Nexus 镜像源

Docker Proxy 缓存

开发工具

Dev Containers

VS Code 开发容器

Podman

Podman 配置指南

Singularity / Apptainer

HPC 科学计算容器

Kubernetes

K8s Containerd

Kubernetes · Containerd

K3s

轻量级集群

面板 / 网络

爱快路由

爱快 4.0 · iKuai 镜像加速

宝塔面板

一键配置镜像源

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

功能

版本功能对比

功能对比 · 版本选择

支持的镜像仓库

Docker Hub · GCR · GHCR

专属域名用法

专属域名 · 开启停用 · 多仓库

新手拉取配置

登录 · 专属域名 · 配置

docker search 限制

专属域名 · Hub 搜索

不支持 push

仅支持 pull · 不支持

拉取速度原因

带宽 · 缓存 · 冷热镜像

错误码

402 与流量用尽

402 · 流量包 · 充值

401 认证失败

401 · docker login

manifest unknown

标签错误 · 镜像不存在

410 Gone 排查

410 · Docker 升级

429 限流

免费版 · 专业版 · 企业版 · 请求频率

其他报错

DNS 超时

DNS 解析 · 网络超时

TLS 证书失败

no matching manifest(架构)

docker.sock / daemon

账号

失败是否计费

manifest · blob · 计费

申请开票(企业 / 个人)

开票 · 发票 · 工单

修改登录密码

网站 · 仓库 · 重置

注销账户

工单 · 数据 · 注销

原理

mirrors 不生效

daemon.json · 重启

去掉域名前缀

docker tag · 重命名

指定架构拉取

ARM64 · AMD64 · 多架构

latest 与「最新」

digest · 版本号 · 标签

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
ghcr.io/0x90d/vdf-web
定价查看流量套餐与价格
博客Docker 镜像公告与技术博客
官方技术交流群:|问题咨询请:提交工单
服务号:轩辕镜像|公众号:源码跳动|小程序:轩辕镜像|官方技术交流群:|问题咨询请:提交工单
专业版 · 高速稳定拉取镜像
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
50GB 仅 ¥8/年
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载·在线技术支持·99.95% SLA 保障·付费会员免广告
用户协议·隐私政策·增值电信业务经营许可证:浙B2-20261007·©2024-2026 源码跳动©2024-2026 杭州源码跳动科技有限公司·商务合作:点击复制邮箱