1. update root README, pointer to all proj 2. create all README Powered by claude code, maybe mistake, checked and commit manually.
174 lines
4.7 KiB
Markdown
174 lines
4.7 KiB
Markdown
# 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。 |