Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReplayFlashFix — 即时重放去闪屏

Windows 10/11 Python 3.10+ License MIT Local processing

从 NVIDIA 即时重放、ShadowPlay 或其他游戏录像中,自动找出意外穿插的桌面帧并去除闪屏。
支持批量处理,保持原始时间轴,不覆盖源视频。

English · 快速开始 · 工作原理 · 命令行

为什么需要 ReplayFlashFix?

某些即时重放录像会把游戏画面和桌面捕获交替写入同一个视频。播放时,桌面可能只出现一帧或连续几帧,看起来像频繁闪屏。手动逐帧剪辑不仅费时,还容易造成音画偏移。

ReplayFlashFix 会扫描低分辨率画面特征,识别与前后游戏帧不连续的桌面来源,再让 FFmpeg 在原始时间戳上过滤这些帧。处理发生在本机,不会上传录像。

界面预览

ReplayFlashFix 深色界面

  • 拖放视频,或一次选择多个文件和整个文件夹
  • 自由勾选本轮需要处理的录像
  • 显示每个视频的扫描、检测、预览和编码进度
  • 自动估算剩余时间,支持安全取消
  • 处理完成后直接打开视频、预览或检测报告
  • 深色/浅色主题,界面处理期间保持响应

快速开始

方法一:下载 Windows 便携版

  1. 在 GitHub 仓库右侧打开 Releases。
  2. 下载 ReplayFlashFix-Windows-x64.zip 并完整解压。
  3. 双击 ReplayFlashFix.exe。
  4. 拖入视频,保持默认的“自动(优先显卡)”,点击 开始智能修复。

便携版不要求安装 Python。首次启动如被 Windows SmartScreen 提示,请确认文件来自本项目的 GitHub Release。

方法二:从源码启动

需要 Windows 10/11 和 64 位完整版 Python 3.10 或更高版本(包含 Tcl/Tk)。推荐使用 python.org 标准安装包;嵌入式/精简运行时不适合启动图形界面。

  1. 下载或克隆本仓库。
  2. 双击 启动 ReplayFlashFix.cmd。
  3. 首次运行等待项目在 .venv 中安装依赖,之后会直接打开界面。

也可以手动启动:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\pythonw.exe .\run_gui.pyw

默认输出

如果没有指定统一输出目录,结果会写入每个源视频旁边的 去闪屏输出 文件夹:

去闪屏输出/
├─ 游戏录像_已去闪屏.mp4
├─ 游戏录像_20260914_141819_检测报告.json
├─ 游戏录像_20260914_141819_候选帧.jpg
└─ .flashfix_cache/

源视频不会被覆盖;同名结果已经存在时,会自动添加 _2、_3 等编号。

工作原理

ReplayFlashFix 保留时间轴的工作方式

  1. FFmpeg 将每一帧缩小为 64×36,再提取分块颜色特征。
  2. 检测器寻找两类高置信度异常:夹在连续游戏画面之间的突变帧,以及桌面/游戏交替出现的双来源序列。
  3. 通过跨时间复现、画面聚类和多轮检测,减少正常转场带来的误判。
  4. 在原始画质视频上使用 select 过滤器移除异常帧,但保留其余帧的原始 PTS。
  5. 异常帧的微小时间间隙由前一帧自然保持,音频仍沿原时间轴播放,因此不会逐渐失去同步。

这是启发式检测工具。对极端剪辑、频繁全屏转场或两个内容源非常相似的录像,建议先启用“仅扫描”并查看候选帧预览。

支持范围与限制

  • 优先支持普通 SDR 游戏录像。当前视频导出为 8 位 H.264,并复制原音轨;识别到 HDR/PQ/HLG 或 BT.2020 时会保留检测报告并跳过导出,避免颜色异常。
  • 这是重新编码处理,并非无损压缩。奇数宽高会在右侧/底部最多补 1 像素,以兼容 H.264。
  • 可处理无音轨及多音轨录像;仅导出第一条视频流,不复制字幕、附件或额外视频流。
  • 报告时间和 -DesktopAt 参考时刻按标称帧率估算。对于可变帧率(VFR)录像,请以报告帧号与预览图为准;编码按保留帧的时间戳输出。
  • 正常黑场、频繁转场与桌面内容相似时仍可能误判。未检出异常并不保证原片没有闪屏;首次使用建议先仅扫描,再确认预览。
  • 首尾异常帧没有双侧参考,修复能力有限;片尾连续坏帧被移除时视频轨可能略短。工具不做运动插帧,也不重建缺失的游戏画面。

设置说明

设置 默认值 说明
检测灵敏度 1.00 提高可捕获更轻微的差异,也可能增加误判
单次闪屏上限 8 帧 一次桌面闪屏可能连续出现的最长帧数;漏检连续闪屏时调大,误判正常转场时调小
重复检测轮数 4 轮 每轮在剩余画面中继续查找遗漏;调高可能提高检出率,也会增加耗时和误判概率
编码方式 自动 优先使用 NVIDIA NVENC,不可用或失败时回退到 libx264
输出画质 6 / 10 数值越大画质越好,文件通常也越大;只影响输出编码,不影响检测结果
候选帧预览 开启 生成“前一帧 / 疑似闪帧 / 后一帧”对比图,用于检查误判,不影响输出画质
扫描缓存 开启 调整参数重试时无需重新解码;源视频内容、大小或修改时间变化后会自动失效

命令行

图形界面之外,项目保留了适合自动化的命令行入口。

# 多选文件弹窗
.\修复闪屏.ps1

# 指定多个视频
.\修复闪屏.ps1 '.\视频1.mp4' '.\视频2.mkv'

# 递归处理文件夹
.\修复闪屏.ps1 'D:\录像' -Recursive

# 只检测,不编码视频
.\修复闪屏.ps1 '.\视频.mp4' -ScanOnly

# 指定已知桌面帧时刻,可帮助识别较长的桌面片段
.\修复闪屏.ps1 '.\视频.mp4' -DesktopAt '00:01:23.450','00:04:56.100'

安装为 Python 包后也可以使用:

.\.venv\Scripts\python.exe -m pip install .
replay-flash-fix '.\视频.mp4' --sensitivity 1.15 --encoder auto

如果当前终端未激活虚拟环境,也可直接运行 .\.venv\Scripts\replay-flash-fix.exe。

查看全部参数:

.\.venv\Scripts\python.exe .\remove_desktop_flash.py --help

隐私与安全

  • 视频分析和编码全部在本地完成,没有网络上传功能。
  • 默认从不覆盖源视频。
  • 当检测器把超过 70% 的画面标记为异常且没有人工参考帧时,会停止编码并在报告中提示。
  • 即使提供参考帧,标记整段视频为异常时也会停止编码。
  • JSON 报告包含本机文件路径。提交 Issue 前可以先删除或替换其中的私人路径。
  • 请勿将包含隐私、聊天窗口或个人信息的原录像直接上传到公开 Issue。

常见问题

为什么输出文件可能比原视频大?

录像必须重新编码。显卡编码器和原录像的码率策略不同,文件大小不会完全一致。可以适当降低“输出画质”数值来减小文件;先用短片测试最合适的设置。

没有 NVIDIA 显卡可以使用吗?

可以。自动模式检测不到 NVENC 时会使用 CPU 的 libx264,只是处理时间通常更长。

漏掉了桌面帧怎么办?

先将灵敏度从 1.00 小幅提高到 1.10–1.25。命令行用户也可通过 -DesktopAt 提供一个已知桌面出现时刻。

正常游戏转场被标记了怎么办?

启用“仅扫描”,查看候选帧预览;若存在误判,将灵敏度调低到 0.80–0.95 后重新检测。扫描缓存会使第二次检测更快。

开发

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
.\.venv\Scripts\python.exe -m pytest
.\.venv\Scripts\python.exe -m ruff check src tests scripts remove_desktop_flash.py run_gui.pyw

构建 Windows 目录式便携包:

.\scripts\build_windows.ps1

构建脚本会先运行回归测试,再生成带离线文档、依赖许可证、BUILD-INFO.json 和 SHA-256 校验文件的 ZIP。发布标签时,GitHub Actions 会创建草稿预发布,方便发布前检查;详见 发布说明。

主要目录:

src/replay_flash_fix/
├─ engine.py     # 特征扫描、检测、预览和编码
├─ gui.py        # CustomTkinter 桌面界面
├─ cli.py        # Python 命令行入口
└─ assets/       # 项目视觉资源

欢迎阅读 CONTRIBUTING.md 后提交 Issue 或 Pull Request。错误反馈请优先附上检测报告和日志,不必公开完整录像。

许可证与声明

ReplayFlashFix 使用 MIT License。依赖和便携包内组件的许可证见 THIRD_PARTY_NOTICES.md。

NVIDIA、GeForce、ShadowPlay 及其标志是 NVIDIA Corporation 的商标。本项目是独立开源工具,与 NVIDIA Corporation 没有隶属、认可或赞助关系。

About

修复 NVIDIA 即时重放中的桌面闪帧,支持 Windows 图形界面和批量处理。

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages