Files
tools/VideoCompress
2025-09-21 23:40:50 +08:00
..
2025-09-21 23:40:50 +08:00
2025-09-12 15:09:11 +08:00
2025-07-25 14:08:06 +08:00
2025-08-26 20:08:31 +08:00
2025-06-25 23:48:35 +08:00
2025-09-12 15:09:11 +08:00
2025-07-25 14:08:06 +08:00
2025-07-25 14:08:06 +08:00
2025-09-12 14:58:58 +08:00

VideoCompress 🎬

一个功能强大的视频批量压缩工具,基于 FFmpeg 构建,支持硬件加速和多种压缩配置选项。

主要特性

  • 批量处理: 递归扫描目录,批量压缩多个视频文件
  • 硬件加速: 支持 NVIDIA、AMD、Intel 显卡硬件加速
  • 灵活配置: 支持 CRF 和固定码率两种压缩模式
  • 进度显示: 实时显示压缩进度和预估时间
  • 多种界面: 提供 Tkinter 和 PySide6 两种 GUI 配置界面
  • 智能跳过: 自动跳过已存在的压缩文件
  • 格式支持: 支持 MP4、MKV 等多种视频格式

🚀 快速开始

环境要求

  • Python 3.7+
  • FFmpeg已内置 ffmpeg.exe

安装依赖

pip install rich PySide6

基本使用

  1. 启动配置界面

    python config_ui.py
    
  2. 直接压缩视频

    python main.py <目标目录>
    
  3. 配置后压缩

    python config.py <目标目录>
    

⚙️ 配置选项

基础设置

  • 输出方式

    • single: 所有压缩文件保存到统一的 Compress 文件夹
    • multi: 在每个视频文件旁创建独立的 compress 文件夹
  • 编码器

    • h264: H.264 编码(兼容性好)
    • hevc: H.265 编码(文件更小)

质量设置

  • CRF 模式(推荐):

    • 数值范围0-51
    • 数值越小质量越高,文件越大
    • 推荐值18-23
  • 固定码率模式

    • 格式:数字+单位(如 2M、500k
    • 可以精确控制文件大小

硬件加速

  • NVIDIA 显卡:使用 h264_nvenchevc_nvenc
  • AMD 显卡:使用 h264_amfhevc_amf
  • Intel 核显:使用 h264_qsvhevc_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
  • 质量优化: 在保持视觉质量的前提下减小文件体积
  • 硬件加速: 利用显卡加速,提高压缩效率

⚠️ 注意事项

  1. 确保有足够的磁盘空间存储压缩后的文件
  2. 硬件加速需要相应的显卡驱动支持
  3. 压缩过程中避免强制退出,可能导致文件损坏
  4. 建议先用小批量文件测试配置效果

🐛 常见问题

Q: 压缩后文件变大了?
A: 降低 CRF 值或检查原文件是否已经是高压缩格式

Q: 硬件加速不生效?
A: 检查显卡驱动是否支持对应的编码器

Q: 程序卡在某个文件?
A: 检查该文件是否损坏或格式不被支持

📝 更新日志

  • v1.2.1: 优化进度显示,修复时间预估
  • v1.2: 添加 PySide6 现代化界面
  • v1.1: 支持硬件加速和多种编码器
  • v1.0: 基础批量压缩功能

📄 许可证

本项目仅供学习和个人使用。


💡 提示: 如有问题或建议,欢迎提出 Issue 或 Pull Request。