VideoCompress 🎬
一个功能强大的视频批量压缩工具,基于 FFmpeg 构建,支持硬件加速和多种压缩配置选项。
✨ 主要特性
- 批量处理: 递归扫描目录,批量压缩多个视频文件
- 硬件加速: 支持 NVIDIA、AMD、Intel 显卡硬件加速
- 灵活配置: 支持 CRF 和固定码率两种压缩模式
- 进度显示: 实时显示压缩进度和预估时间
- 多种界面: 提供 Tkinter 和 PySide6 两种 GUI 配置界面
- 智能跳过: 自动跳过已存在的压缩文件
- 格式支持: 支持 MP4、MKV 等多种视频格式
🚀 快速开始
环境要求
- Python 3.7+
- FFmpeg(已内置 ffmpeg.exe)
安装依赖
pip install rich PySide6
基本使用
-
启动配置界面:
python config_ui.py
-
直接压缩视频:
python main.py <目标目录>
-
配置后压缩:
python config.py <目标目录>
⚙️ 配置选项
基础设置
-
输出方式:
single
: 所有压缩文件保存到统一的 Compress 文件夹multi
: 在每个视频文件旁创建独立的 compress 文件夹
-
编码器:
h264
: H.264 编码(兼容性好)hevc
: H.265 编码(文件更小)
质量设置
-
CRF 模式(推荐):
- 数值范围:0-51
- 数值越小质量越高,文件越大
- 推荐值:18-23
-
固定码率模式:
- 格式:数字+单位(如 2M、500k)
- 可以精确控制文件大小
硬件加速
- NVIDIA 显卡:使用
h264_nvenc
或hevc_nvenc
- AMD 显卡:使用
h264_amf
或hevc_amf
- Intel 核显:使用
h264_qsv
或hevc_qsv
📁 项目结构
VideoCompress/
├── main.py # 核心压缩引擎
├── config.py # Tkinter 配置界面
├── config_ui.py # PySide6 现代化配置界面
├── config.json # 配置文件
├── ffmpeg.exe # FFmpeg 可执行文件
├── ffprobe.exe # FFprobe 可执行文件
├── test.py # 测试文件
├── pack.bat # 打包脚本
└── logs/ # 日志文件夹
🔧 高级用法
自定义 FFmpeg 参数
在配置界面的"高级设置"中,可以添加自定义 FFmpeg 参数:
# 示例:设置线程数
-threads 4
# 示例:自定义预设
-preset slow
# 示例:音频编码设置
-c:a aac -b:a 128k
手动参数模式
如果需要完全自定义压缩命令,可以在配置文件中设置 manual
参数:
{
"manual": ["-vf", "scale=1280:720", "-c:v", "libx264", "-crf", "20"]
}
训练模式(实验性)
启用训练模式可以让程序学习压缩时间,提供更准确的时间预估:
{
"train": true
}
📊 输出示例
2025-08-26 19:20:15 - INFO - Video Compress started at 2025/08/26 19:20
2025-08-26 19:20:15 - INFO - 开始验证环境
2025-08-26 19:20:16 - INFO - 正在获取视频信息 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100%
2025-08-26 19:20:17 - INFO - 总进度 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45%
2025-08-26 19:20:17 - INFO - test.mp4 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67%
🎯 使用场景
- 批量压缩: 处理大量视频文件,减小存储空间
- 格式转换: 将各种格式的视频统一转换为 MP4
- 质量优化: 在保持视觉质量的前提下减小文件体积
- 硬件加速: 利用显卡加速,提高压缩效率
⚠️ 注意事项
- 确保有足够的磁盘空间存储压缩后的文件
- 硬件加速需要相应的显卡驱动支持
- 压缩过程中避免强制退出,可能导致文件损坏
- 建议先用小批量文件测试配置效果
🐛 常见问题
Q: 压缩后文件变大了?
A: 降低 CRF 值或检查原文件是否已经是高压缩格式
Q: 硬件加速不生效?
A: 检查显卡驱动是否支持对应的编码器
Q: 程序卡在某个文件?
A: 检查该文件是否损坏或格式不被支持
📝 更新日志
- v1.2.1: 优化进度显示,修复时间预估
- v1.2: 添加 PySide6 现代化界面
- v1.1: 支持硬件加速和多种编码器
- v1.0: 基础批量压缩功能
📄 许可证
本项目仅供学习和个人使用。
💡 提示: 如有问题或建议,欢迎提出 Issue 或 Pull Request。