简洁易用的 Windows 视频压缩工具
Warning
以下内容有不少 AI 生成,所以如果发现 REAME.md 写错了也正常。
欢迎为项目提供 PR !
- 一键压缩: 拖拽文件/文件夹到窗口,选择配置即可开始压缩
- 智能处理: 自动修正视频旋转元数据,优化输出质量
- 多配置方案: 内置默认、快速和高质量三种配置,支持自定义扩展
- 批量处理: 支持递归扫描子文件夹,批量处理多个视频文件
- 高级选项:
- 可选择删除音频轨道以进一步减小文件体积
- 支持压缩完成后自动删除源文件
- 可选OpenCL GPU加速,提升编码速度
- 日志记录: 详细的操作日志,便于调试和问题排查
- 绿色便携: 单文件可执行程序,无需安装,包含所有必要依赖
- Python 3.12+: 主要开发语言
- Tkinter: 图形用户界面
- FFmpeg: 视频处理核心工具(已内置)
- x264: H.264 视频编码器(通过FFmpeg调用)
- AAC: 高级音频编码支持
- pymediainfo: 专业媒体信息解析库
- windnd: 实现拖拽功能
- PyInstaller: 应用程序打包工具
下载可执行文件: 从发布页面下载 VideoSlim.exe(已包含所有依赖)
- 将视频文件或包含视频的文件夹拖入窗口
- 从下拉菜单选择合适的配置方案
- 根据需要勾选高级选项:
- ✅ 递归:同时处理子文件夹中的视频
- ✅ 删除源文件:压缩完成后删除原始视频
- ✅ 删除音频:移除视频中的音频轨道
- 点击"压缩"按钮开始处理
输出结果: 处理完成后,将在源文件同目录生成 *_x264.mp4 文件。
应用启动时读取 config.json。若不存在,将自动生成默认配置
| 参数名 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|
| crf | 0–51 | 23.5 | 质量控制参数,值越小质量越高(体积越大) 推荐范围:18–28 |
| preset | 编码预设字符串 | medium | 编码速度/压缩效率平衡 可选值:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo |
| I | 正整数 | 600 | 关键帧间隔(GOP),控制视频的时间结构 |
| r | 正整数 | 4 | 参考帧数量,影响压缩效率和编码速度 |
| b | 正整数 | 3 | B 帧数量,提升压缩效率但增加编码复杂度 |
| opencl_acceleration | true/false | false | 是否开启 OpenCL GPU 加速 开启后可大幅提升编码速度(需硬件支持) |
- 日常使用: 推荐使用 "default" 配置(crf=23.5, preset=medium)
- 快速处理: 选择 "fast" 配置,适合大量视频的快速压缩
- 高质量需求: 使用 "high_quality" 配置,提供接近原画质的压缩效果
- 自定义配置: 可在
configs中添加新的配置方案,命名任意
- 安装 Python: 确保安装了 Python 3.12 或更高版本
- 克隆项目并进入项目根目录:
git clone https://github.com/mainite/VideoSlim.git cd VideoSlim
2.5 安装 uv:
pipx install uv- 创建虚拟环境并安装依赖:
uv venv uv sync --extra dev
- 安装构建工具:
uv pip install pyinstaller
项目提供了 scripts/build.cmd 自动化构建脚本,可一键生成单文件可执行程序:
# 在项目根目录运行
scripts/build.cmd
# 或者用 uv 运行
uv run scripts/build.cmd构建过程会自动完成以下操作:
- 清理旧的构建文件
- 配置 PyInstaller 打包参数
- 添加必要的工具文件(ffmpeg.exe、icon.ico)
- 生成单文件可执行程序
构建完成后,可执行文件将位于:output/dist/VideoSlim.exe
项目使用 ruff 作为代码格式化器,遵循默认的格式化规则。
uv run ruff formatuv run ruff check- 创建并激活虚拟环境
- 安装依赖(包括开发依赖)
- 编写代码
- 使用 ruff 格式化代码
- 测试功能
- 提交代码
VideoSlim/
├── main.py # 应用程序启动入口
├── config.json # 配置文件(首次运行自动生成)
├── pyproject.toml # Python 项目配置
├── README.md # 项目文档
├── LICENSE # 许可证文件
├── src/ # 源代码主目录
│ ├── controller.py # MVC 控制器层
│ ├── view.py # MVC 视图层
│ ├── meta.py # 应用常量和版本定义
│ ├── service/ # 核心服务模块
│ │ ├── video.py # 视频压缩处理服务
│ │ ├── config.py # 配置管理服务
│ │ ├── message.py # 消息通信服务
│ │ └── updater.py # 更新检查服务
│ ├── model/ # 数据模型定义
│ └── utils/ # 工具函数库
├── tools/ # 内置工具集
│ ├── ffmpeg.exe # FFmpeg 视频处理引擎
│ ├── icon.ico # 应用程序图标
│ └── LICENSE # 第三方工具许可证
├── img/ # 文档截图和资源
├── scripts/ # 辅助脚本
│ └── build.cmd # 自动化构建脚本
└── output/ # 构建输出目录
[输入视频] → [媒体信息解析] → [旋转修正(可选)] → [视频编码] → [音频处理] → [输出文件]
-
媒体信息解析
- 使用 pymediainfo 库分析视频文件的详细信息
- 检测视频编码、分辨率、帧率、时长等参数
- 判断是否包含音频轨道和旋转元数据
-
旋转修正预处理
- 检测视频的旋转元数据(如手机拍摄的视频)
- 如果需要,使用 FFmpeg 进行旋转修正,生成临时文件
-
视频编码压缩
- 核心使用 FFmpeg 的 libx264 编码器
- 根据配置参数(crf、preset、参考帧等)进行高质量压缩
- 支持 OpenCL GPU 加速,提升编码效率
-
音频处理
- 根据用户选择保留或删除音频轨道
- 保留时使用 AAC 编码,确保音频质量
-
输出文件
- 生成 MP4 格式的压缩视频
- 文件名格式:
原始文件名_x264.mp4 - 自动清理临时文件
- 单命令处理: 使用单个 FFmpeg 命令完成所有处理,减少文件 I/O 开销
- 智能路径处理: 自动适配开发和打包环境的工具路径
- 异常处理: 完善的错误捕获和日志记录,确保程序稳定性
- 性能优化: 合理的线程管理和资源利用
- 程序运行时会生成
log.txt文件 - 日志包含详细的命令执行信息和错误信息
- 如遇到问题,可查看日志文件进行调试
- 无法拖拽/窗口不响应: 确认已安装所有依赖,并以常规权限运行
- 无法解析媒体信息: 确保视频文件未被占用,或尝试安装最新版本的 MediaInfo
- 编码失败: 查看
log.txt获取具体错误信息 - 质量不满意: 调整
crf参数(值越小质量越高) - 编码过慢: 提高
preset参数值(如从 slow 改为 medium 或 fast)
本项目采用开源许可证,详见 LICENSE 文件。
FFmpeg 和其他第三方工具按其各自许可证使用与分发。
- FFmpeg: 强大的音视频处理工具
—— 祝使用愉快 🎬

