一个还在实验阶段的 Windows 本地视频打码工具。
做这个项目的起因很简单:录屏发布前,经常需要隐藏手机号、邮箱、账号、聊天内容和游戏昵称。剪辑软件当然能做,但逐段寻找、框选、跟踪再检查,长视频处理起来很磨人。
Privacy Video 尝试把这段流程串起来:
导入视频 → 本地OCR扫描 → 生成风险时间线 → 人工确认 → 打码导出
所有识别和渲染都在本机完成,视频不会上传到服务器。公开的社区版不需要登录或授权文件,可以完整导出视频。
- 导入视频、定位时间和预览画面;
- 使用 RapidOCR 扫描中文与英文;
- 检测手机号、邮箱、身份证、银行卡、QQ、微信、API Key、JWT和IP;
- 把重复出现的风险内容合并到时间线;
- 手动画框添加固定遮挡;
- 框选移动区域后自动生成跟踪关键帧;
- 提供像素马赛克、高斯模糊、纯色遮挡和毛玻璃;
- 完整时长导出,不添加试用水印;
- 使用 FFmpeg 保留原音频并导出;
- 自动尝试 NVIDIA、Intel、AMD 硬件编码,失败后回退到软件编码。
游戏昵称是目前最想继续验证的部分,暂时提供三种方式。
不绑定具体游戏。先收集画面里的短文本,再根据屏幕运动排除固定HUD,并拆开同一文字出现在聊天框、击杀提示和角色头顶等不同位置的轨迹。
优点是不用给每款游戏写配置,缺点也很明显:强特效完全盖住文字时,OCR没有任何信息可用,仍可能短暂漏检。
把文字附近的水平状态条当作额外证据。目前更适合MOBA一类画面,但并不是LOL专用规则。
在名称清晰的一帧框选区域,模板跟踪器会向后生成稀疏关键帧。自动检测漏掉的位置可以用它补轨。
测试片段:LOL、1920×1080、60 FPS、21秒。
- 通用模式扫描约60秒;
- 生成39段候选轨迹,这不是39个不同玩家,而是被遮挡和重新出现后拆开的时间片段;
- NVIDIA NVENC导出约12秒;
- 固定比分、FPS和大部分HUD文字能够被排除;
- 激烈战斗中的部分昵称仍会因特效遮挡而漏掉。
现阶段更像“自动完成大部分,再集中复核”,还不是可以完全不看结果的一键魔法。
Windows下可以直接双击:
run.cmd
首次运行会创建 .venv 并安装依赖。手动安装方式:
python -m venv .venv
.venv\Scripts\python.exe -m pip install -e ".[ocr,dev]"
.venv\Scripts\python.exe -m privacy_video.app生成一段8秒的测试视频:
.venv\Scripts\python.exe tools\make_demo_video.py执行测试:
.venv\Scripts\python.exe -m pytest -q当前共有17项测试。
powershell -ExecutionPolicy Bypass -File .\build.ps1输出位置:
release/PrivacyVideo-Windows-x64.zip
release/PrivacyVideo-Windows-x64.sha256.txt
当前构建没有代码签名,Windows可能显示未知发布者。
src/privacy_video/
├─ app.py # Tk桌面界面
├─ analysis.py # 常规隐私扫描
├─ dynamic_game_text.py # 通用动态文字聚类与轨迹
├─ game_names.py # 血条附近昵称实验
├─ tracking.py # 模板跟踪
├─ ocr.py # RapidOCR适配
├─ rules.py # 隐私字段规则
├─ renderer.py # 遮挡渲染与FFmpeg导出
├─ models.py # 项目、事件和关键帧模型
└─ video.py # 视频读取与画面哈希
- 通用游戏昵称检测仍会漏检和误报;
- 特效遮挡期间主要依赖前后关键帧插值,轨迹可能漂移;
- OCR首次运行需要准备模型;
- 长视频导出需要足够的临时磁盘空间;
- 目前只有Windows界面;
- 低置信度片段还没有独立的复核队列。
继续只用一段LOL录像调参数,很容易把“通用检测”做成另一套LOL专用规则。与其闭门增加更多判断,不如先把能运行的版本公开,看看它在FPS、MMO、战术竞技和其他语言界面上到底会怎样。
最有帮助的不是一句“支持”,而是一段可以公开的短样片、一组漏检时间点,或者一次针对轨迹关联的Pull Request。
现有的两个任务:
开发约定见 CONTRIBUTING.md。Bug、想法和Pull Request都可以直接提交。