Skip to content

584090205/open_encode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

视频编解码工具

一个基于Python和PySide6的视频编解码GUI工具,支持图片序列编码为视频和视频解码为图片序列。

功能特性

核心功能

  • 📹 图片序列编码:将一系列图片编码为视频文件
  • 🖼️ 视频解码:将视频解码为图片序列
  • 🎨 多种编码格式:支持 libx264、libx265、mpeg4、vp9 等
  • 🎯 精确控制:支持设置帧率、质量、分辨率、位深度等参数
  • ⏱️ 时间范围选择:解码时可以指定开始时间和持续时间
  • 📊 帧间隔设置:可以按指定间隔提取帧

最新功能(v0.1.0 - 2026-03-04更新)✨

1. 实时进度显示 📈

  • 解码进度:实时显示"正在解码... 50/200 帧"
  • 编码进度:显示"正在编码... 300 张图片"
  • 进度条准确反映实际处理进度

2. FFmpeg命令显示 🔍

  • 新增专门的"FFmpeg 命令"显示区域
  • 自动记录所有执行的命令
  • 支持一键复制命令到剪贴板
  • 命令带有时间戳,便于追踪

3. 预览功能增强 👁️

  • 执行前可以查看完整的FFmpeg命令
  • 验证参数设置是否正确
  • 方便调试和学习FFmpeg

4. 深色/浅色主题 🎨

  • 支持切换深色和浅色主题
  • 主题设置会自动保存

安装指南

前置要求

  • Python 3.11 或更高版本
  • FFmpeg(需要安装到系统PATH中)

安装FFmpeg

  1. 下载FFmpeg:https://ffmpeg.org/download.html
  2. 解压到合适的位置(如 C:\ffmpeg
  3. 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

基本操作

解码(视频转图片)

  1. 切换到"解码"标签页
  2. 选择输入视频文件
  3. 选择输出图片目录
  4. 设置参数(位深度、时间范围、帧间隔等)
  5. (可选)点击"预览"查看FFmpeg命令
  6. 点击"开始解码"
  7. 查看进度条更新
  8. 完成后查看FFmpeg命令对话框

编码(图片转视频)

  1. 切换到"编码"标签页
  2. 选择包含图片的文件夹
  3. 选择输出视频路径和格式
  4. 设置参数(编码器、帧率、质量、分辨率等)
  5. (可选)点击"预览"查看FFmpeg命令
  6. 点击"开始编码"
  7. 查看进度条更新
  8. 完成后查看FFmpeg命令对话框

查看FFmpeg命令

有三种方式:

  1. 自动弹出:编码/解码完成后自动显示
  2. 命令区域:在右侧"FFmpeg 命令"区域查看历史命令
  3. 预览功能:执行前点击"预览"按钮查看

复制命令

两种方式:

  1. 在命令对话框中点击"复制命令"
  2. 在"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:文件操作工具类

关键组件

编码线程 (EncodeThread)

  • 继承自QThread,在后台执行编码
  • 发送progress_update信号更新进度
  • 发送encode_complete信号通知完成

解码线程 (DecodeThread)

  • 继承自QThread,在后台执行解码
  • 实时监控输出目录,计算实际进度
  • 发送progress_update信号更新进度
  • 发送decode_complete信号通知完成

FFmpeg命令构建

  • _build_encoding_command():构建编码命令
  • _build_decoding_command():构建解码命令

常见问题

Q: 进度条不动?

A: 检查FFmpeg是否正确安装,查看操作日志中的错误信息。

Q: 找不到FFmpeg?

A:

  1. 确认FFmpeg已安装
  2. 检查是否在系统PATH中
  3. 或在设置中手动指定FFmpeg路径

Q: 编码后的视频无法播放?

A:

  1. 查看FFmpeg命令是否正确
  2. 尝试其他编码器(如libx264)
  3. 检查输入图片是否有效

Q: 解码速度很慢?

A:

  1. 设置更大的帧间隔
  2. 指定时间范围而不是全部解码
  3. 降低输出图片质量

Q: 如何学习FFmpeg命令?

A:

  1. 使用预览功能查看命令
  2. 复制命令到命令行执行
  3. 查看命令日志文件
  4. 参考FFmpeg官方文档

日志文件

命令日志

位置:C:\Users\你的用户名\AppData\Local\Temp\video_codec_commands.log

内容:

  • 所有执行的FFmpeg命令
  • 时间戳
  • 执行结果(成功/失败,错误码)

用途:

  • 调试问题
  • 学习FFmpeg命令
  • 追踪历史操作

更新日志

详细的更新日志请查看 CHANGELOG.md

最新更新(2026-03-04):

  • ✅ 实时进度显示
  • ✅ FFmpeg命令显示区域
  • ✅ 预览功能增强
  • ✅ 命令复制功能

许可证

MIT License

贡献

欢迎提交Issue和Pull Request!

联系方式

如有问题或建议,请提交Issue。


注意:本工具仅用于学习和个人使用,请遵守相关法律法规和版权规定。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages