# VideoCompress 🎬 一个功能强大的视频批量压缩工具,基于 FFmpeg 构建,支持硬件加速和多种压缩配置选项。 ## ✨ 主要特性 - **批量处理**: 递归扫描目录,批量压缩多个视频文件 - **硬件加速**: 支持 NVIDIA、AMD、Intel 显卡硬件加速 - **灵活配置**: 支持 CRF 和固定码率两种压缩模式 - **进度显示**: 实时显示压缩进度和预估时间 - **多种界面**: 提供 Tkinter 和 PySide6 两种 GUI 配置界面 - **智能跳过**: 自动跳过已存在的压缩文件 - **格式支持**: 支持 MP4、MKV 等多种视频格式 ## 🚀 快速开始 ### 环境要求 - Python 3.7+ - FFmpeg(已内置 ffmpeg.exe) ### 安装依赖 ```bash pip install rich PySide6 ``` ### 基本使用 1. **启动配置界面**: ```bash python config_ui.py ``` 2. **直接压缩视频**: ```bash python main.py <目标目录> ``` 3. **配置后压缩**: ```bash 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 参数: ```bash # 示例:设置线程数 -threads 4 # 示例:自定义预设 -preset slow # 示例:音频编码设置 -c:a aac -b:a 128k ``` ### 手动参数模式 如果需要完全自定义压缩命令,可以在配置文件中设置 `manual` 参数: ```json { "manual": ["-vf", "scale=1280:720", "-c:v", "libx264", "-crf", "20"] } ``` ### 训练模式(实验性) 启用训练模式可以让程序学习压缩时间,提供更准确的时间预估: ```json { "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。