Video Cover Editor 是一款基于 Python (PyQt6) 开发的桌面应用程序,旨在帮助创作者快速为视频文件制作、修改和嵌入高质量的封面图(Thumbnail)。
它集成了视频播放、帧截取、画布编辑、文字排版以及 Google Gemini AI (gemini-3-pro-image-preview)绘图功能,支持一键将制作好的封面写入视频文件元数据中,或导出为独立图片。
- 📺 视频预览与截帧
- 内置视频播放器,支持进度条拖拽、音量调节。
- 一键截取:支持精确截取当前视频画面作为封面底图。
- 🎨 强大的画布编辑
- 文字编辑:支持添加多行文字,拖拽移动、缩放。
- 样式自定义:修改字体(自动读取系统字体)、字号、填充颜色、描边颜色。
- 背景管理:支持使用视频截图、本地图片,或自定义双色渐变背景(水平/垂直/对角)。
- 撤销/重做:支持
Ctrl+Z/Ctrl+Shift+Z操作,防止误触。
- 🤖 AI 智能封面生成
- 集成 Google Gemini / Imagen 模型。
- 文生图:根据提示词生成创意封面。
- 图生图:基于当前视频截图,利用 AI 进行风格化重绘或增强。
- 💾 输出与保存
- 写入视频:利用 FFmpeg 将封面无损嵌入视频文件(作为 metadata),不重新编码视频流。
- 导出图片:将设计好的封面另存为
.jpg或.png。
- 💅 现代化 UI
- 采用玻璃拟态(Glassmorphism)设计风格,界面美观流畅。
- 语言: Python 3.8+
- GUI 框架: PyQt6
- 多媒体处理: FFmpeg (通过
imageio-ffmpeg自动管理核心) - AI 模型接口: Google Gen AI SDK (
google-genai)
确保你拥有以下文件结构:
Plaintext
.
├── main.py # 程序入口
├── main_window.py # 主窗口逻辑
├── custom_widgets.py # 自定义组件 (画布、滑块等)
├── utils.py # 工具函数 (FFmpeg 路径等)
├── workers.py # 多线程任务 (缩略图生成、AI 生成等)
├── styles.py # UI 样式表
└── resources/ # 图标资源文件夹 (icon.ico)
建议使用虚拟环境。请在终端运行以下命令安装所需库:
Bash
pip install PyQt6 imageio-ffmpeg google-genai pillow
PyQt6: 用于构建图形界面。imageio-ffmpeg: 自动提供 FFmpeg 可执行文件,无需手动配置系统环境变量。google-genai: 用于调用 Google Gemini API。pillow: 图像处理辅助。
如果你需要使用 AI 封面生成功能,需要申请 Google Gemini API Key,并将其设置为系统环境变量。
-
Windows (PowerShell):
PowerShell
$env:GOOGLE_API_KEY="你的_API_KEY"
-
或者在代码中临时测试 (不推荐提交到仓库):
在启动前通过 os.environ["GOOGLE_API_KEY"] = "..." 设置。
-
或者直接可视化界面操作也可以。
在项目根目录下运行:
Bash
python main.py
- 点击左上角的 “📂 打开视频文件夹”,选择包含视频的目录。
- 左侧列表会显示该目录下的所有支持视频(mp4, mkv, mov, avi),并自动生成缩略图。
- 点击列表中的视频即可加载。
你有三种方式确定背景:
- 截取视频帧:在右侧播放器暂停在心仪画面,点击 “📸 截取”。
- AI 生成:点击 “✨ AI 封面”,输入提示词(Prompt),或勾选“使用当前截图作为参考”生成图片。
- 纯色/渐变:在左侧设置面板选择 “纯色/渐变”,设置起始色和结束色。
- 点击 “➕ 添加文字”,画布会出现“输入文字”字样。
- 编辑文字:双击画布上的文字框,或在左侧输入框修改内容。
- 调整位置:直接用鼠标拖拽文字。
- 调整大小:拖拽文字右下角的控制点,或使用左侧“字号”微调框。
- 修改颜色:分别设置“填充”和“描边”颜色。
- 🎬 设为视频封面:将当前画布内容写入视频文件。程序会自动生成临时封面并替换原视频封面流(操作极快,无损画质)。
- 🖼️ 另存为图片:仅导出当前画布为一张 JPG/PNG 图片。
| 快捷键 | 功能 |
|---|---|
| Space(空格) | 播放/暂停 |
| <- ->(左箭头、右箭头) | 播放进度微调 |
| Ctrl Z | 撤销 |
| Ctrl Shift Z 或 Ctrl Y | 重做 |
| 文件名 | 说明 |
|---|---|
main.py |
程序的主入口,负责初始化 QApplication 和加载样式。 |
main_window.py |
核心业务逻辑,包含主窗口布局、事件处理、交互逻辑。 |
custom_widgets.py |
存放自定义 UI 组件,如可拖拽文字(DraggableTextItem)、绘图画布(CoverCanvas)等。 |
workers.py |
包含后台线程类,处理耗时操作(生成缩略图、调用 FFmpeg、请求 AI API),防止界面卡顿。 |
utils.py |
通用工具函数,主要用于获取 FFmpeg 路径和处理跨平台差异。 |
styles.py |
集中管理的 QSS 样式表,定义了程序的视觉风格(颜色、圆角、渐变等)。 |
- FFmpeg 支持:程序优先使用
imageio-ffmpeg内置的二进制文件(你无需自己下载)。如果遇到问题,请确保系统已安装 FFmpeg 并添加到环境变量,程序会在内置版失败时回退到系统命令。 - 备份文件:虽然“设为视频封面”操作是安全的(使用
copy模式),但建议在对重要视频操作前进行备份。 - 网络连接:使用 AI 功能时需要确保
网络能连接到 Google API 服务器(还要有key)。