Skip to content

LingyunStudio/VideoCoverEditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 视频封面编辑器 (Video Cover Editor)

Video Cover Editor 是一款基于 Python (PyQt6) 开发的桌面应用程序,旨在帮助创作者快速为视频文件制作、修改和嵌入高质量的封面图(Thumbnail)。

它集成了视频播放、帧截取、画布编辑、文字排版以及 Google Gemini AIgemini-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)

⚙️ 环境依赖与安装

1. 克隆或下载项目

确保你拥有以下文件结构:

Plaintext

.
├── main.py            # 程序入口
├── main_window.py       # 主窗口逻辑
├── custom_widgets.py     # 自定义组件 (画布、滑块等)
├── utils.py           # 工具函数 (FFmpeg 路径等)
├── workers.py          # 多线程任务 (缩略图生成、AI 生成等)
├── styles.py           # UI 样式表
└── resources/          # 图标资源文件夹 (icon.ico)

2. 安装依赖库

建议使用虚拟环境。请在终端运行以下命令安装所需库:

Bash

pip install PyQt6 imageio-ffmpeg google-genai pillow
  • PyQt6: 用于构建图形界面。
  • imageio-ffmpeg: 自动提供 FFmpeg 可执行文件,无需手动配置系统环境变量。
  • google-genai: 用于调用 Google Gemini API。
  • pillow: 图像处理辅助。

🚀 快速开始

1. 配置 AI API Key (可选)

如果你需要使用 AI 封面生成功能,需要申请 Google Gemini API Key,并将其设置为系统环境变量。

  • Windows (PowerShell):

    PowerShell

    $env:GOOGLE_API_KEY="你的_API_KEY"
  • 或者在代码中临时测试 (不推荐提交到仓库):

    在启动前通过 os.environ["GOOGLE_API_KEY"] = "..." 设置。

  • 或者直接可视化界面操作也可以。

2. 运行程序

在项目根目录下运行:

Bash

python main.py

📖 使用指南

1. 加载视频

  • 点击左上角的 “📂 打开视频文件夹”,选择包含视频的目录。
  • 左侧列表会显示该目录下的所有支持视频(mp4, mkv, mov, avi),并自动生成缩略图。
  • 点击列表中的视频即可加载。

2. 制作封面背景

你有三种方式确定背景:

  1. 截取视频帧:在右侧播放器暂停在心仪画面,点击 “📸 截取”
  2. AI 生成:点击 “✨ AI 封面”,输入提示词(Prompt),或勾选“使用当前截图作为参考”生成图片。
  3. 纯色/渐变:在左侧设置面板选择 “纯色/渐变”,设置起始色和结束色。

3. 添加文字与排版

  • 点击 “➕ 添加文字”,画布会出现“输入文字”字样。
  • 编辑文字:双击画布上的文字框,或在左侧输入框修改内容。
  • 调整位置:直接用鼠标拖拽文字。
  • 调整大小:拖拽文字右下角的控制点,或使用左侧“字号”微调框。
  • 修改颜色:分别设置“填充”和“描边”颜色。

4. 保存结果

  • 🎬 设为视频封面:将当前画布内容写入视频文件。程序会自动生成临时封面并替换原视频封面流(操作极快,无损画质)。
  • 🖼️ 另存为图片:仅导出当前画布为一张 JPG/PNG 图片。

5. 快捷键

快捷键 功能
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 样式表,定义了程序的视觉风格(颜色、圆角、渐变等)。

⚠️ 注意事项

  1. FFmpeg 支持:程序优先使用 imageio-ffmpeg 内置的二进制文件(你无需自己下载)。如果遇到问题,请确保系统已安装 FFmpeg 并添加到环境变量,程序会在内置版失败时回退到系统命令。
  2. 备份文件:虽然“设为视频封面”操作是安全的(使用 copy 模式),但建议在对重要视频操作前进行备份。
  3. 网络连接:使用 AI 功能时需要确保网络能连接到 Google API 服务器(还要有key)。

About

Video Cover Editor,视频封面快速修改

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages