FrameKeeper 是一款轻量级的、基于系统托盘的 Windows 应用程序,专为按固定间隔自动捕获屏幕截图而设计。它是为您工作创建延时视频、监控长时间运行的进程或保留屏幕活动的可视化日志的理想工具。捕获的帧按项目进行组织,并可以轻松、智能地导出为视频文件。
- 自动截图: 按用户定义的时间间隔捕获整个屏幕。
- 系统托盘运行: 在系统托盘中静默运行,方便访问所有功能,而不会使任务栏变得混乱。
- 项目化管理: 将捕获的截图保存在不同的项目文件夹中,方便管理不同的录制会话。
- 智能分辨率处理: 在导出视频前,自动扫描所有截图的分辨率。当检测到多种分辨率时,会警告用户并提供按分辨率分组导出为多个独立视频的选项,以避免画面拉伸或视频乱码。
- 优化的视频导出: 使用多线程和生产者-消费者模型高速处理图片并将其合成为 MP4 视频。动态计算最佳视频码率,并提供“最大化压缩”、“平衡”和“最大化质量”三种导出预设,以平衡文件大小和画面质量。
- 帧清理功能: 提供一个实用工具,可以根据捕获间隔删除冗余帧,从而节省磁盘空间。
- 可自定义配置: 轻松调整截图间隔、图像格式 (JPG/PNG)、JPG 质量、视频导出质量和保存位置等设置。
- 开机自启: 可配置在系统启动时自动运行。
- 高DPI支持: 用户界面和图标会根据高分辨率显示器进行缩放。
- 单实例运行: 使用锁文件机制防止应用程序的多个实例同时运行。
应用程序启动后,一个图标将出现在您的系统托盘中。主窗口默认是隐藏的。右键单击托盘图标以访问菜单。
- 状态: 显示截图功能是
运行中
还是已停止
。 - 开始/停止截图: 启动或停止屏幕捕获过程。托盘图标会改变以指示状态(红色表示运行,灰色表示停止)。
- 切换项目: 允许您在不同的项目文件夹之间切换以保存截图。通过在您的
base_save_path
中创建一个新文件夹即可创建新项目。 - 清理冗余截图: 扫描当前项目文件夹,并删除那些捕获速度快于配置间隔的图像,只保留任何快速序列中的第一张图片。包含已删除文件详细信息的日志文件将保存到您的桌面。
- 导出为视频: 启动一个多步骤流程来创建视频:
- 首先,选择包含截图的项目文件夹。
- 程序将自动扫描该项目中的所有图片,以检测其分辨率。此过程有单独的进度窗口。
- 如果检测到多种分辨率,程序会显示一个警告,列出所有分辨率及其数量,并询问您是否要将它们分组导出为多个视频。如果您选择“是”,则会为每种分辨率创建一个单独的视频文件(例如
video_1920x1080.mp4
)。 - 最后,系统将提示您为输出视频设置帧率(FPS)。
- 导出过程开始,并显示详细的进度窗口,包括进度条、已处理文件计数和预计剩余时间。
- 设置: 打开设置窗口,您可以在其中配置应用程序。
- 退出: 停止应用程序并从系统托盘中移除图标。
设置存储在位于 %APPDATA%/FrameKeeper/
的 config.ini
文件中。这些设置可以通过应用程序中的“设置”窗口进行修改。
- 截图间隔 (秒): 每次截图之间等待的时间。
- 程序储存目录: 存储所有项目文件夹的根目录。
- 图片格式: 在
JPG
(文件更小)和PNG
(无损质量)之间选择。 - JPG 压缩质量: JPG 图像质量的值,范围从 1 到 100。值越高,质量越好,文件也越大。如果选择 PNG,此设置将被禁用。
- 视频质量(码率): 在导出视频时用于控制码率的预设。选项包括
最大化压缩
(文件更小)、平衡
(默认) 和最大化质量
(文件更大)。 - 开机自启: 如果选中,应用程序将被添加到 Windows 注册表,以便在启动时自动运行。
FrameKeeper 作为一个后台进程运行,可从 Windows 系统托盘访问。激活后,它会按指定的时间间隔进行屏幕截图。
这些截图被保存在一个结构化的文件夹系统中。基础目录默认为您用户文件夹下的 FrameKeeper_Captures
。在此目录中,会为每个“项目”创建一个文件夹。在项目文件夹内,图像存储在编号的子文件夹中(例如,“1”,“2”,...)。为了确保高效的文件系统性能,每捕获 10,000 张图像后就会创建一个新的子文件夹。
视频导出功能经过了高度优化。当用户选择导出项目时,FrameKeeper首先会通过多线程快速扫描所有图片文件以统计存在的分辨率。如果存在多种分辨率,它会提议按分辨率分组导出,为每个分辨率尺寸生成一个独立的视频,从而确保最佳的兼容性和质量。视频编码过程采用了生产者-消费者模型,其中多个工作线程负责读取和解码图片,而一个专门的编码线程则将帧数据输送给 FFmpeg。这种架构可以充分利用多核CPU,并有效管理内存,即使在处理数万张高分辨率图片时也能保持流畅。
普通用户请在 Releases 下载本程序的发行版,解压后即可运行。
1. 前提条件:
- Python 3: 确保您的系统上已安装 Python 3。您可以从 python.org 下载。
- FFmpeg: FrameKeeper 的视频导出功能需要 FFmpeg。
- 从 ffmpeg.org 下载 FFmpeg。
- 下载后,在
FrameKeeper.py
脚本所在的目录中创建一个名为_internal
的文件夹。 - 解压下载的 FFmpeg 文件,并将
ffmpeg.exe
放入_internal
文件夹中。最终路径应如下所示:.../FrameKeeper/_internal/ffmpeg.exe
。
2. 安装 Python 依赖:
使用 pip 安装所需的 Python 库。可以创建一个包含以下内容的 requirements.txt
文件:
opencv-python-headless
psutil
pystray
numpy
Pillow
运行以下命令进行安装:
pip install -r requirements.txt
本项目依赖于多个 Python 库来提供其功能。您可以使用上面“下载并使用源代码”部分中提供的 requirements.txt
文件来安装它们。主要依赖项包括:
Pillow
: 用于图像捕获和处理。pystray
: 用于创建和管理系统托盘图标。opencv-python-headless
: 用于在视频导出期间处理图像帧。psutil
: 用于监控内存使用情况以防止导出时过载。numpy
: OpenCV 的依赖项,用于高效的数组操作。
标准库(如 tkinter
, os
, threading
等)已包含在 Python 安装中。
- FFmpeg: “导出为视频”功能所必需。
该项目根据 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。