一个基于Python和PySide6的视频编解码GUI工具,支持图片序列编码为视频和视频解码为图片序列。
- 📹 图片序列编码:将一系列图片编码为视频文件
- 🖼️ 视频解码:将视频解码为图片序列
- 🎨 多种编码格式:支持 libx264、libx265、mpeg4、vp9 等
- 🎯 精确控制:支持设置帧率、质量、分辨率、位深度等参数
- ⏱️ 时间范围选择:解码时可以指定开始时间和持续时间
- 📊 帧间隔设置:可以按指定间隔提取帧
- 解码进度:实时显示"正在解码... 50/200 帧"
- 编码进度:显示"正在编码... 300 张图片"
- 进度条准确反映实际处理进度
- 新增专门的"FFmpeg 命令"显示区域
- 自动记录所有执行的命令
- 支持一键复制命令到剪贴板
- 命令带有时间戳,便于追踪
- 执行前可以查看完整的FFmpeg命令
- 验证参数设置是否正确
- 方便调试和学习FFmpeg
- 支持切换深色和浅色主题
- 主题设置会自动保存
- Python 3.11 或更高版本
- FFmpeg(需要安装到系统PATH中)
- 下载FFmpeg:https://ffmpeg.org/download.html
- 解压到合适的位置(如
C:\ffmpeg) - 将
C:\ffmpeg\bin添加到系统PATH环境变量
使用uv(推荐):
# 安装uv
pip install uv
# 安装项目依赖
uv sync或使用pip:
pip install -e .方式1:使用run.py
python run.py方式2:使用命令行
video-codec-tool- 切换到"解码"标签页
- 选择输入视频文件
- 选择输出图片目录
- 设置参数(位深度、时间范围、帧间隔等)
- (可选)点击"预览"查看FFmpeg命令
- 点击"开始解码"
- 查看进度条更新
- 完成后查看FFmpeg命令对话框
- 切换到"编码"标签页
- 选择包含图片的文件夹
- 选择输出视频路径和格式
- 设置参数(编码器、帧率、质量、分辨率等)
- (可选)点击"预览"查看FFmpeg命令
- 点击"开始编码"
- 查看进度条更新
- 完成后查看FFmpeg命令对话框
有三种方式:
- 自动弹出:编码/解码完成后自动显示
- 命令区域:在右侧"FFmpeg 命令"区域查看历史命令
- 预览功能:执行前点击"预览"按钮查看
两种方式:
- 在命令对话框中点击"复制命令"
- 在"FFmpeg 命令"区域点击"复制命令"
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 编解码器 | 视频编码格式 | libx264(最佳兼容性) |
| 帧率 | 每秒帧数 | 30 fps |
| 质量 | CRF值,0-51 | 18-23(高质量) |
| 位深度 | 色彩位深度 | 8 bit(标准) |
| 分辨率 | 输出分辨率 | 原图大小 |
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 输出位深度 | 图片位深度 | 8 bit |
| 开始时间 | 从第几秒开始 | 0(从头开始) |
| 持续时间 | 提取多长时间 | 0(全部) |
| 帧间隔 | 每隔几帧提取一次 | 1(所有帧) |
decode_videos/
├── src/
│ └── video_codec_tool/
│ ├── core/
│ │ └── codec_engine.py # 核心编解码引擎
│ ├── ui/
│ │ └── main_window.py # 主窗口界面
│ ├── utils/
│ │ └── file_utils.py # 文件工具
│ └── main.py # 主程序入口
├── run.py # 启动脚本
├── pyproject.toml # 项目配置
├── README.md # 项目说明
├── CHANGELOG.md # 更新日志
├── 快速使用指南.md # 使用指南
└── 测试指南.md # 测试指南
- GUI框架:PySide6 (Qt for Python)
- 视频处理:FFmpeg
- 图像处理:OpenCV (cv2)
- 数组计算:NumPy
- 图像IO:Imageio, Pillow
codec_engine.py:核心编解码逻辑,包含FFmpeg命令构建main_window.py:GUI界面,包含所有UI组件和事件处理file_utils.py:文件操作工具类
- 继承自QThread,在后台执行编码
- 发送progress_update信号更新进度
- 发送encode_complete信号通知完成
- 继承自QThread,在后台执行解码
- 实时监控输出目录,计算实际进度
- 发送progress_update信号更新进度
- 发送decode_complete信号通知完成
_build_encoding_command():构建编码命令_build_decoding_command():构建解码命令
A: 检查FFmpeg是否正确安装,查看操作日志中的错误信息。
A:
- 确认FFmpeg已安装
- 检查是否在系统PATH中
- 或在设置中手动指定FFmpeg路径
A:
- 查看FFmpeg命令是否正确
- 尝试其他编码器(如libx264)
- 检查输入图片是否有效
A:
- 设置更大的帧间隔
- 指定时间范围而不是全部解码
- 降低输出图片质量
A:
- 使用预览功能查看命令
- 复制命令到命令行执行
- 查看命令日志文件
- 参考FFmpeg官方文档
位置:C:\Users\你的用户名\AppData\Local\Temp\video_codec_commands.log
内容:
- 所有执行的FFmpeg命令
- 时间戳
- 执行结果(成功/失败,错误码)
用途:
- 调试问题
- 学习FFmpeg命令
- 追踪历史操作
详细的更新日志请查看 CHANGELOG.md
最新更新(2026-03-04):
- ✅ 实时进度显示
- ✅ FFmpeg命令显示区域
- ✅ 预览功能增强
- ✅ 命令复制功能
MIT License
欢迎提交Issue和Pull Request!
如有问题或建议,请提交Issue。
注意:本工具仅用于学习和个人使用,请遵守相关法律法规和版权规定。