# Video-Dedup-Tool **Repository Path**: kynoo/Video-Dedup-Tool ## Basic Information - **Project Name**: Video-Dedup-Tool - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-10 - **Last Updated**: 2026-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 视频去重工具 video_dedup_tool Video-Dedup-Tool-main ## 简介 这是一个基于 Python 和 FFmpeg 的视频去重工具,通过修改视频的视觉特征和文件特征来实现视频去重,避免平台的重复内容检测。本工具已集成所有必要组件,可直接运行。 ## 功能特性 1. **水平镜像** - 对视频进行水平翻转 2. **RGB偏移** - 对视频的RGB通道进行轻微偏移 3. **时间跳跃** - 让帧率节奏在源帧率 ±0.5% 内轻微波动(不插值重建,画质几乎无损) 4. **修改MD5值** - 通过重新编码和添加元数据修改文件MD5值 5. **蒙版倒置** - 降低画面透明度并叠加到黑底,产生整体色调偏移(透明度 0-0.5) 6. **视频抽针** - 每隔指定帧数抽掉 1 帧并自动补帧(时长、帧率保持不变,播放流畅) 7. **随机裁剪** - 随机裁掉 0.5%-1.5% 边框后 lanczos 缩放回原分辨率(分辨率不变,画质影响小) 8. **批量处理** - 文件列表支持批量添加文件/文件夹,逐项显示处理状态 9. **参数随机化** - 为每个文件独立在安全区间随机取值,避免批量输出彼此相似 10. **处理轮数** - 支持 1-3 轮串联处理,每轮重新随机化,累计放大与原片的差异 11. **音频基础处理** - 音量微调 + 重采样 + 轻微频谱/相位扰动,**不改变音调与播放速度** ## 技术架构 - **编程语言**: Python 3.10.11(已集成) - **图形界面**: tkinter (Python内置) - **视频处理**: FFmpeg 8.0(已集成) - **操作系统**: Windows ## 项目结构 ``` 项目根目录/ ├── ffmpeg-8.0/ # FFmpeg程序目录(已集成) │ ├── bin/ # 可执行文件 │ │ ├── ffmpeg.exe # 视频处理主程序 │ │ └── ffprobe.exe # 媒体信息分析工具 │ └── ... ├── python/ # Python运行环境(已集成) │ ├── python.exe # Python主程序 │ └── ... ├── video_dedup_tool.py # 主程序文件 ├── start.bat # 启动脚本 └── README.md # 说明文档 ``` ## FFmpeg 组件说明(ffmpeg.exe / ffprobe.exe) 本工具依赖以下两个 FFmpeg 可执行文件,**必须**位于 `ffmpeg-8.0/bin/` 目录内: | 文件 | 路径 | 用途 | | --- | --- | --- | | `ffmpeg.exe` | `ffmpeg-8.0/bin/ffmpeg.exe` | 视频去重处理(水平镜像、RGB 偏移、时间跳跃、蒙版倒置、视频抽针、重新编码、嵌入缩略图) | | `ffprobe.exe` | `ffmpeg-8.0/bin/ffprobe.exe` | 读取视频信息(时长、帧率、是否含音轨),用于显示处理进度与参数取值 | 程序通过项目内的相对路径调用这两个文件,无需配置环境变量,也无需单独安装 FFmpeg。 > ⚠️ **重要**:这两个文件必须是**真实的 Windows 可执行程序**(每个约 80 MB)。 > 如果它们的体积只有约 130 字节,说明是 Git LFS 占位文件(直接下载 GitHub 的 zip 包时会出现这种情况), > 程序无法调用它,点击"开始处理"会失败。请执行 `git lfs pull` 拉取真实文件, > 或手动将其替换为真实的 ffmpeg/ffprobe 二进制文件。 ## 使用方法 ### 方法一:使用启动脚本(推荐) 1. 双击运行 ``start.bat`` 文件 2. 通过“添加文件”/“添加文件夹”把要处理的视频加入文件列表(支持批量) 3. 勾选需要的去重功能,按需开启“参数随机化”“音频基础处理” 4. 点击“开始处理”按钮(处理中可点击“取消”) 5. 处理完成后,输出文件保存在**源文件同目录**下,命名为 `原名_dedup.扩展名`;若已存在则自动追加序号,不会覆盖原文件 ### 方法二:直接运行Python文件 在命令行中执行: ```bash python video_dedup_tool.py ``` 或者 ```bash python\python.exe video_dedup_tool.py ``` ## 功能详解 ### 时间跳跃 让视频帧率节奏在源帧率 ±0.5% 内轻微波动(约每 2-3 秒少/多 1 帧)。早期版本使用 `minterpolate` 运动补偿插值,会重建每一帧导致画面发软;现改为 `fps` 滤镜直接微调帧率——帧内容全部原样保留、不重建任何帧,**画质几乎无损**,肉眼基本察觉不到变化,同时改变帧时间网格以规避重复检测。 ### RGB偏移 让视频 RGB 颜色通道按设置偏移,达到换色目的。通过对RGB通道进行轻微的空间偏移来产生视觉差异。 ### 水平镜像 让视频进行左右镜像翻转,改变视频的视觉内容但保持内容完整性。 ### 修改MD5值 通过重新编码视频并添加随机元数据,规避平台重复检测。确保输出文件的MD5值与原文件不同。 ### 蒙版倒置 降低画面透明度并叠加到黑底,产生整体色调偏移,可设置透明度值(0-0.5),默认值为0.03(即 3% 透明)。 > 说明:视频最终编码为 `yuv420p`(无 alpha 通道),直接设置 alpha 会被丢弃。因此本功能改为在 RGB 平面按透明度缩放颜色,效果等价于"以该透明度叠加到黑底",保证参数真正生效。 ### 随机裁剪 随机裁掉画面 0.5%-1.5% 的边框,再用 lanczos 缩放回原分辨率(**分辨率保持不变**),轻微改变构图与像素分布。比例刻意收窄且使用高质量缩放,避免画面被明显"推近"或放大后变糊;裁剪量与裁剪位置每个文件独立随机,对感知哈希(pHash)仍有影响。 ### 视频抽针 每隔指定帧数抽掉 1 帧(默认间隔 5,即每 5 帧抽掉 1 帧,可设置间隔,也支持每个文件独立取随机间隔),随即用 `minterpolate`(`mi_mode=blend`)插值把被抽掉的帧补回。输出与原片**时长、帧率完全一致**,恒定帧率(`-fps_mode cfr`)播放流畅不卡顿,画面仅轻微柔化(快速运动时略有重影)。间隔越小变化越明显(2-3 较强,5 以上较轻微)。 ### 参数随机化 开启后,每个文件独立在安全区间随机取值(CRF、GOP、B帧、RGB偏移、蒙版透明度、裁剪比例与位置、抽针间隔、音频增益/EQ/相位等),避免批量输出彼此相似;关闭时使用固定默认值。 ### 处理轮数 对同一文件串联执行多轮处理(1-3 轮),每轮重新探测媒体信息并独立随机化参数,累计放大与原片的差异。水平镜像是自逆变换(翻转两次会还原),因此多轮时只在首轮应用。 ### 音频基础处理 在**不改变音调、不改变播放速度**的前提下扰动音频指纹: - `volume` 时变增益:慢周期波动 + 逐帧随机抖动,改变波形包络 - `equalizer` 轻微频谱整形:改变频谱包络 - `adelay` 声道相位微移(仅立体声):破坏声道间相位关系 - `aresample` 重采样 为避免歧义,程序不使用 `asetrate`/`atempo` 等会变速变调的滤镜。无音轨的文件会自动跳过音频处理。 ## 界面说明 程序启动后默认以**最大化(全屏)**窗口打开,可手动调整大小。 1. **文件列表区域**:添加文件 / 添加文件夹(递归扫描)/ 移除选中 / 清空列表,列表逐项显示状态(待处理 · 处理中 · 完成 · 失败) 2. **功能选择区域**:勾选需要应用的去重功能 3. **高级选项区域**:参数随机化、音频基础处理开关、处理轮数(1-3) 4. **开始处理 / 取消 / 清空按钮**:批量处理与中断控制 5. **进度条**:显示当前文件处理进度和百分比 6. **处理日志区域**:显示处理过程的详细信息 7. **功能介绍区域**:显示各功能的详细说明 ## 注意事项 1. 支持的视频格式:MP4、AVI、MKV、MOV、WMV、FLV、WEBM等主流格式 2. 处理时间取决于视频大小和选择的功能数量 3. 处理过程会占用一定系统资源,请耐心等待 4. 请确保有足够的磁盘空间存储处理后的视频文件 5. 本工具已集成所有必要组件,无需额外安装 6. 如果启动失败,请检查杀毒软件是否阻止了程序运行 7. 处理完成后会为 MP4/MOV/M4V/MKV 输出嵌入一张缩略图(内嵌封面),便于在文件管理器中预览 ## 开发说明 ### 主要文件 - `video_dedup_tool.py` - 主程序文件,包含GUI界面和处理逻辑 - `start.bat` - Windows启动脚本(优先使用项目自带 Python,缺失时回退到系统 Python 或 py 启动器) - `ffmpeg-8.0/bin/ffmpeg.exe` - FFmpeg主程序 - `python/python.exe` - Python解释器 ### 核心处理流程 1. 用户选择视频文件和功能选项 2. 根据选择构建FFmpeg命令 3. 调用FFmpeg执行视频处理 4. 实时监控处理进度 5. 生成处理后的视频文件 ### FFmpeg命令说明 程序会根据用户选择的功能构建相应的FFmpeg命令: - `-vf` / `-filter:v:0` 参数用于视频滤镜处理(`crop` + `scale(lanczos)`、`hflip`、`rgbashift`、`fps`、`select` + `minterpolate(blend)`、`colorchannelmixer`) - `-af` 参数用于音频基础处理(`volume` + `equalizer` + `adelay` + `aresample`,不变调不变速) - `format=gbrp` + `colorchannelmixer` 让蒙版透明度真正生效(`yuv420p` 输出无 alpha 通道) - `-map_metadata -1` / `-map_chapters -1` 清除原有元数据与章节,再用 `-metadata` 写入新的元数据 - `-c:v libx264` 用于视频重新编码(`veryfast` 预设 + CRF 18-22),并附加 `-profile:v high -pix_fmt yuv420p -g/-bf` 等编码参数 - `-fps_mode cfr` 在抽针后用恒定帧率输出(被抽帧已由 `minterpolate` 补回),保证播放流畅且时长不变 - 源分辨率为奇数时自动先规整为偶数宽高(`scale=trunc(iw/2)*2:trunc(ih/2)*2`),避免 yuv420p 编码失败 - 输出为 mp4/mov/m4v 时追加 `-movflags +faststart`,把 moov 原子移到文件头,便于平台快速起播 ## 常见问题 ### 启动失败 1. 确保所有文件都在同一目录下 2. 确保Windows系统完整性 3. 检查杀毒软件是否阻止了程序运行 ### 处理失败 1. 检查视频文件是否损坏 2. 确保磁盘有足够空间 3. 关闭可能占用视频文件的其他程序 ### 处理时间过长 1. 视频文件较大时处理时间会相应增加 2. 选择的功能越多处理时间越长 3. 可以尝试降低视频质量设置来加快处理速度 ## 免责声明 本工具仅供学习和技术研究使用,请遵守相关法律法规,不要用于任何违法用途. ## 开源协议 本项目基于 MIT 协议开源。 ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=sdlw7757/Video-Dedup-Tool&type=Date)](https://star-history.com/#sdlw7757/Video-Dedup-Tool&Date) ## 打赏支持 如果这个工具对你有帮助,欢迎打赏支持作者的开发与维护。 | 支付宝 | 微信 | | :----: | :--: | | ![支付宝](alipay-qr.jpg) | ![微信](wechat-qr.png) |