如果你使用 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 是一款跨平台软件,可基于相似度查找硬盘中的重复视频(及图像)文件。与其他重复文件查找工具不同,本工具即使面对分辨率不同、帧率不同甚至带水印的重复文件,也能成功识别。
VDF 可以识别短视频属于长视频中某一片段的情况——例如从电影中截取的片段,或是从更长的录制内容中保存的剪辑。该功能通过音频指纹技术筛选候选文件,能够捕获常规视觉扫描遗漏的片段;默认情况下,每一个音频匹配结果都会通过比对匹配偏移位置处的帧进行视觉二次确认。
该功能作为常规视觉重复扫描之后的可选第二阶段运行,采用音频指纹流水线(类 Chromaprint 的色度提取 + 滑动窗口汉明相似度匹配)。匹配成功的文件对将显示在重复文件列表中,额外提供「片段偏移量」列,标注该片段在源视频中的起始位置。
进入「设置 → 片段检测」,勾选「启用片段检测」,并可调整以下参数:
| 设置项 | 默认值 | 说明 |
|---|---|---|
| 最小片段/源视频占比(%) | 10 | 片段时长占源视频时长的最小百分比,短于此阈值的片段将被忽略。 |
| 最小音频相似度(%) | 80 | 滑动窗口指纹匹配可被接受的最小平均汉明相似度。 |
| 要求视觉确认 | 启用 | 拒绝那些在匹配偏移位置处的帧视觉特征不相似的音频匹配结果。 |
| 最小视觉相似度(%) | 85 | 视觉确认阶段要求的最小帧相似度。 |
[!NOTE] 片段检测功能要求两个文件均包含音轨。不含音频的视频将被跳过——对于这类文件,请查看下文 AI 匹配部分介绍的视觉变体方案。
VDF 还可通过神经图像嵌入(基于 ONNX Runtime 运行的 DINOv2 视觉模型)比对视频。经典比对机制仍为权威判定依据:AI 扫描仅会添加它判定置信度足够高的匹配对,因此启用该功能绝不会隐藏原本就能识别出的结果。它专门擅长处理基于像素的常规方法会遗漏的以下场景:
该功能的两个开关相互独立,默认均为关闭状态:
| 设置项 | 所在位置 | 默认值 | 说明 |
|---|---|---|---|
| AI 匹配(额外扫描阶段) | 设置 → 匹配 | 关闭 | 在选中的经典模式基础上,额外启用嵌入特征比对。 |
| AI 相似度阈值(%) | 设置 → 匹配 | 94 | 两个文件的嵌入特征需要达到的最低相似度。若下调至约 92,可识别更多深度编辑的副本,但误判风险会小幅上升。 |
| 视觉检测部分重复片段(AI) | 设置 → 片段检测 | 关闭 | 对裁剪/嵌入的片段执行密集关键帧匹配,无需音频。 |
| AI 帧命中阈值(%) | 设置 → 片段检测 | 89 | 单关键帧匹配命中所需的最低相似度;至少需要 4 个命中结果指向同一个时间偏移,两个视频才会被判定为匹配。如果出现无关视频被错误配对的情况,可提高该阈值。 |
CLI 对应参数:--ai-matching、--ai-percent、--ai-partial、--ai-partial-hit-percent
DenseEmbeddings.db 中(每个视频约占 25 KB),该文件会自动执行清理。每日构建版本:每次代码提交后,其附带的安装包都会自动重新构建并替换。
版本化正式发布(类似 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 服务器运行需要 FFmpeg 和 FFprobe。首次启动时 VDF 会尝试自动下载这两个组件。原生 FFmpeg 绑定要求使用 FFmpeg 8.x 共享库(非 master 分支版本)。
从 https://ffmpeg.org/download.html 下载最新的 FFmpeg GPL 共享包,将其中的 ffmpeg.exe 和 ffprobe.exe 解压至与 VDF.GUI.exe 相同的文件夹内、名为 bin 的子文件夹中,或是确保二者已加入系统 PATH。
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/
完成后,该应用及其图标就会出现在你的应用启动器中。
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 版本适用于脚本编写、定时任务,以及无显示设备的无头服务器场景。
与 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-percent | AI 判定相似度阈值(取值范围 50–100) | 94 |
--ai-partial | 通过 AI 关键帧实现可视化片段检测(无需音频) | 关闭 |
--ai-partial-hit-percent | 单关键帧匹配阈值(取值范围 70–99) | 89 |
| `--format json | text | csv` |
--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 服务器形式运行,可通过浏览器访问,专为无头设备、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 服务的配置和登录凭据存储路径如下:
%APPDATA%\VDF\~/.config/VDF/(或 $XDG_CONFIG_HOME/VDF/)~/Library/Preferences/VDF/扫描数据库文件 ScannedFiles.db 会优先存储在与可执行文件同级的目录下(前提是该目录具备写入权限);若该目录不可写,则会自动回退到以下路径:
%LOCALAPPDATA%\VDF\~/.local/state/VDF/(或 $XDG_STATE_HOME/VDF/)~/Library/Application Support/VDF/镜像名称:ghcr.io/0x90d/vdf-web
参考标签:latest
Docker 是在 NAS、家用服务器或任意 Linux 设备上运行 Web UI 的最简便方式。镜像内已预装 FFmpeg,无需单独安装。
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.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 查看)。Video Duplicate Finder 是一款跨平台软件,可基于文件相似性在硬盘中查找重复的视频及图像文件。与其他查重工具不同,本工具还能识别分辨率、帧率不同,甚至带有水印的重复媒体文件。
VDF 可识别出短视频是长视频的部分片段场景,例如从电影中截取的片段、从长时长录像中保存的剪辑。候选片段通过音频指纹技术匹配,可捕捉到普通视觉扫描遗漏的片段;默认情况下,所有音频匹配结果都会通过对比对应偏移位置的帧内容,完成二次视觉核验。
该功能作为独立的第二阶段步骤,在常规视觉重复扫描完成后运行,采用音频指纹流水线(类 Chromaprint 色度特征提取 + 滑动窗口汉明相似度匹配)。匹配成功的文件对会显示在重复文件列表中,附带「片段偏移量」列,标注该片段在源长视频中的起始位置。
进入 设置 → 片段检测,勾选启用片段检测,可按需调整以下参数:
| 设置项 | 默认值 | 说明 |
|---|---|---|
| 最小片段/源视频占比 (%) | 10 | 片段时长占源视频总时长的最低百分比,短于该阈值的片段将被直接忽略。 |
| 最小音频相似度 (%) | 80 | 滑动窗口指纹匹配可被接受的最低平均汉明相似度。 |
| 启用视觉核验 | 开启 | 若音频匹配结果在对应偏移位置的帧内容视觉相似度不达标,直接拒绝该匹配结果。 |
| 最小视觉相似度 (%) | 85 | 视觉核验步骤要求的帧内容最低相似度。 |
[!NOTE] 片段检测功能要求两个文件都包含音频轨道,不含音频的视频会被跳过。此类场景可参考下文「AI 匹配」中的视觉片段检测方案。
VDF 还可通过神经图像嵌入技术对比视频内容,底层基于 ONNX Runtime 运行 https://github.com/***research/dinov2 视觉模型。原有经典对比逻辑仍作为核心判定依据,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 服务器运行依赖 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 版本适用于脚本调用、定时任务,以及没有显示器的无头服务器场景。
与 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 服务器形式运行,你可以直接通过浏览器访问使用。该版本专为无头设备、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 配置和登录凭据存储路径如下:
%APPDATA%\VDF\~/.config/VDF/(也可使用 $XDG_CONFIG_HOME/VDF/)~/Library/Preferences/VDF/扫描数据库文件(ScannedFiles.db)的存储规则为:如果程序所在目录可写入,则直接保存在该目录下;否则自动回落至以下路径:
%LOCALAPPDATA%\VDF\~/.local/state/VDF/(也可使用 $XDG_STATE_HOME/VDF/)~/Library/Application Support/VDF/通过 Docker 是在 NAS、家庭服务器或任意 Linux 设备上运行 Web UI 的最简单方式,镜像中已内置 FFmpeg,无需额外单独安装。
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.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
docker logs 输出获取随机密码)。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 等设备。Video Duplicate Finder 采用 AGPLv3 许可证发布。
可选 AI 组件会在首次使用时单独下载,各自遵循独立的许可证规则:ONNX Runtime 采用 MIT 许可证,DINOv2-small 嵌入模型采用 Apache-2.0 许可证。二者均未随发布版本的二进制文件一同打包,也未与程序二进制文件做链接。
来自真实用户的反馈,见证轩辕镜像的优质服务