Skip to content

一款在系统托盘中运行的 Windows 截图工具,可按固定间隔自动捕捉屏幕,并将图像序列轻松导出为延时视频。适合用于工作记录、项目监控与创意分享。

License

Notifications You must be signed in to change notification settings

huonanwholovecomputer/FrameKeeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FrameKeeper

Python Version License Status

FrameKeeper 是一款轻量级的、基于系统托盘的 Windows 应用程序,专为按固定间隔自动捕获屏幕截图而设计。它是为您工作创建延时视频、监控长时间运行的进程或保留屏幕活动的可视化日志的理想工具。捕获的帧按项目进行组织,并可以轻松、智能地导出为视频文件。

目录

主要功能

  • 自动截图: 按用户定义的时间间隔捕获整个屏幕。
  • 系统托盘运行: 在系统托盘中静默运行,方便访问所有功能,而不会使任务栏变得混乱。
  • 项目化管理: 将捕获的截图保存在不同的项目文件夹中,方便管理不同的录制会话。
  • 智能分辨率处理: 在导出视频前,自动扫描所有截图的分辨率。当检测到多种分辨率时,会警告用户并提供按分辨率分组导出为多个独立视频的选项,以避免画面拉伸或视频乱码。
  • 优化的视频导出: 使用多线程和生产者-消费者模型高速处理图片并将其合成为 MP4 视频。动态计算最佳视频码率,并提供“最大化压缩”、“平衡”和“最大化质量”三种导出预设,以平衡文件大小和画面质量。
  • 帧清理功能: 提供一个实用工具,可以根据捕获间隔删除冗余帧,从而节省磁盘空间。
  • 可自定义配置: 轻松调整截图间隔、图像格式 (JPG/PNG)、JPG 质量、视频导出质量和保存位置等设置。
  • 开机自启: 可配置在系统启动时自动运行。
  • 高DPI支持: 用户界面和图标会根据高分辨率显示器进行缩放。
  • 单实例运行: 使用锁文件机制防止应用程序的多个实例同时运行。

使用指南

应用程序启动后,一个图标将出现在您的系统托盘中。主窗口默认是隐藏的。右键单击托盘图标以访问菜单。

系统托盘菜单

  • 状态: 显示截图功能是 运行中 还是 已停止
  • 开始/停止截图: 启动或停止屏幕捕获过程。托盘图标会改变以指示状态(红色表示运行,灰色表示停止)。
  • 切换项目: 允许您在不同的项目文件夹之间切换以保存截图。通过在您的 base_save_path 中创建一个新文件夹即可创建新项目。
  • 清理冗余截图: 扫描当前项目文件夹,并删除那些捕获速度快于配置间隔的图像,只保留任何快速序列中的第一张图片。包含已删除文件详细信息的日志文件将保存到您的桌面。
  • 导出为视频: 启动一个多步骤流程来创建视频:
    1. 首先,选择包含截图的项目文件夹。
    2. 程序将自动扫描该项目中的所有图片,以检测其分辨率。此过程有单独的进度窗口。
    3. 如果检测到多种分辨率,程序会显示一个警告,列出所有分辨率及其数量,并询问您是否要将它们分组导出为多个视频。如果您选择“是”,则会为每种分辨率创建一个单独的视频文件(例如 video_1920x1080.mp4)。
    4. 最后,系统将提示您为输出视频设置帧率(FPS)。
    5. 导出过程开始,并显示详细的进度窗口,包括进度条、已处理文件计数和预计剩余时间。
  • 设置: 打开设置窗口,您可以在其中配置应用程序。
  • 退出: 停止应用程序并从系统托盘中移除图标。

配置文件所在位置

设置存储在位于 %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库

本项目依赖于多个 Python 库来提供其功能。您可以使用上面“下载并使用源代码”部分中提供的 requirements.txt 文件来安装它们。主要依赖项包括:

  • Pillow: 用于图像捕获和处理。
  • pystray: 用于创建和管理系统托盘图标。
  • opencv-python-headless: 用于在视频导出期间处理图像帧。
  • psutil: 用于监控内存使用情况以防止导出时过载。
  • numpy: OpenCV 的依赖项,用于高效的数组操作。

标准库(如 tkinter, os, threading 等)已包含在 Python 安装中。

外部程序

  • FFmpeg: “导出为视频”功能所必需。

许可证

该项目根据 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。

About

一款在系统托盘中运行的 Windows 截图工具,可按固定间隔自动捕捉屏幕,并将图像序列轻松导出为延时视频。适合用于工作记录、项目监控与创意分享。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages