需要压缩几十甚至上百个视频文件?手动一个个处理太慢?本文介绍5种高效的批量压缩方案,从命令行脚本到图形化工具,总有一种适合你。
方法对比
技术用户推荐FFmpeg脚本(最灵活高效);普通用户推荐HandBrake队列(操作简单);大量文件推荐Shutter Encoder(自动化程度高)。
方法一:FFmpeg 批处理脚本
FFmpeg是最强大灵活的批量压缩方案,适合技术用户。通过简单的脚本可以自动处理整个文件夹的视频。
Windows 批处理脚本
创建一个batch_compress.bat文件,内容如下:
@echo off
setlocal enabledelayedexpansion
mkdir compressed 2>nul
for %%f in (*.mp4 *.avi *.mkv *.mov) do (
echo Processing: %%f
ffmpeg -i "%%f" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "compressed\%%~nf_compressed.mp4"
if !errorlevel! equ 0 (
echo Success: %%f
) else (
echo Failed: %%f
)
)
echo All done!
pause
使用方法:
- 把脚本文件放到视频文件夹
- 双击运行
- 压缩后的文件会保存在
compressed子文件夹
Linux/Mac Shell 脚本
创建batch_compress.sh文件:
#!/bin/bash
mkdir -p compressed
for file in *.mp4 *.avi *.mkv *.mov; do
[ -e "$file" ] || continue
echo "Processing: $file"
filename="${file%.*}"
ffmpeg -i "$file" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "compressed/${filename}_compressed.mp4"
if [ $? -eq 0 ]; then
echo "Success: $file"
else
echo "Failed: $file"
fi
done
echo "All done!"
使用方法:
- 给脚本执行权限:
chmod +x batch_compress.sh - 运行脚本:
./batch_compress.sh
进阶:多种输出格式
可以根据原始分辨率选择不同的压缩参数:
#!/bin/bash
mkdir -p compressed
for file in *.mp4; do
[ -e "$file" ] || continue
# 获取分辨率
height=$(ffprobe -v error -select_streams v:0 -show_entries stream=height -of csv=p=0 "$file")
filename="${file%.*}"
echo "Processing: $file (${height}p)"
if [ "$height" -ge 2160 ]; then
# 4K视频:H.265压缩
ffmpeg -i "$file" -c:v libx265 -crf 26 -preset medium -c:a copy "compressed/${filename}_4k.mp4"
elif [ "$height" -ge 1080 ]; then
# 1080P:标准H.264
ffmpeg -i "$file" -c:v libx264 -crf 23 -preset medium -c:a copy "compressed/${filename}_1080p.mp4"
else
# 720P及以下:快速压缩
ffmpeg -i "$file" -c:v libx264 -crf 25 -preset fast -c:a copy "compressed/${filename}_720p.mp4"
fi
done
并行处理(加速)
利用GNU Parallel同时处理多个文件:
# 安装 parallel
sudo apt install parallel # Linux
brew install parallel # Mac
# 并行压缩(同时处理4个文件)
parallel -j 4 ffmpeg -i {} -c:v libx264 -crf 23 -preset medium -c:a copy compressed/{/.}_compressed.mp4 ::: *.mp4
在多核CPU上,并行处理可以显著提升速度。
FFmpeg脚本优势:
- 完全自动化,设置好参数后无需人工干预
- 可以根据文件属性动态调整参数
- 支持并行处理,充分利用多核CPU
- 适合集成到自动化工作流程
方法二:HandBrake 队列处理
HandBrake提供了友好的图形界面,支持队列批量处理。适合不熟悉命令行的用户。
操作步骤
- 打开HandBrake
- 添加文件到队列:
- 点击"Open Source" → 选择第一个视频
- 设置输出路径和压缩参数
- 点击"Add to Queue"而不是"Start"
- 重复上述步骤,添加所有视频到队列
- 批量应用预设:
- 选择合适的预设(如"Fast 1080p30")
- 修改任何需要的参数
- 右键点击预设 → "Set as default"
- 后续添加的文件会自动应用此预设
- 开始批量压缩:
- 点击顶部"Queue"按钮查看队列
- 点击"Start Queue"开始处理
- HandBrake会按顺序处理所有文件
快速添加整个文件夹
HandBrake支持批量导入:
- 点击"Open Source" → "Open Folder"
- 选择包含视频的文件夹
- HandBrake会扫描并列出所有视频
- 选择预设后,点击"Add All to Queue"
推荐预设
| 预设名称 | 编码器 | 质量 | 速度 | 适用场景 |
|---|---|---|---|---|
| Very Fast 1080p30 | H.264 | 中等 | 很快 | 大量文件快速处理 |
| Fast 1080p30 | H.264 | 良好 | 快 | 日常批量压缩 |
| HQ 1080p30 Surround | H.264 | 高质量 | 中等 | 重要视频存档 |
| Super HQ 1080p30 | H.265 | 极高 | 慢 | 专业存档 |
自定义预设
创建自己的批量压缩预设:
- 按需调整所有参数(视频、音频、字幕等)
- 点击底部"Presets"面板
- 点击"Save New Preset"
- 命名并保存
- 之后批量添加时选择此预设即可
方法三:Shutter Encoder 自动监控
Shutter Encoder是一款专业的批量转码工具,支持监控文件夹自动处理新文件。
主要特性
- 拖放操作 - 直接拖拽文件或文件夹到窗口
- 监控文件夹 - 自动检测并处理新增文件
- 丰富的预设 - 内置几十种常用格式
- 硬件加速 - 支持NVIDIA/AMD/Intel GPU加速
- 批量重命名 - 自动添加前缀/后缀
批量压缩操作
- 添加文件:
- 拖拽视频文件到窗口
- 或点击"Choose files"选择多个文件
- 选择输出格式:
- 在"Function"下拉菜单选择压缩方案
- 推荐:"H.264"或"H.265"
- 调整参数:
- 质量:拖动滑块调整CRF值
- 分辨率:可选择缩小到1080P/720P
- 码率:支持CBR/VBR模式
- 设置输出路径:
- 点击"Choose"选择输出文件夹
- 勾选"Same as source"保存到原位置
- 开始处理:
- 点击"Start function"
- 软件会依次处理所有文件
监控文件夹模式
设置自动处理工作流:
- 勾选"Watch folder for new files"
- 选择要监控的文件夹
- 设置好压缩参数
- 点击"Start function"
- 任何放入该文件夹的新视频会自动压缩
这对于定期处理手机导出视频、监控录像等场景非常实用。
方法四:视频批处理工具
除了上述方案,还有一些专门的批量处理工具值得推荐。
4.1 Xmedia Recode (Windows)
免费的德国软件,功能强大:
- 支持队列批量转换
- 丰富的设备预设(iPhone、Android等)
- 可以批量裁剪、添加字幕
- 支持硬件加速
批量操作:
- 点击"打开文件"添加多个视频
- 选择输出格式和设备
- 调整视频参数(可应用于全部)
- 点击"编码"开始批量处理
4.2 格式工厂 (Windows)
国产老牌转换工具,界面简单:
- 完全免费,无广告(经典版)
- 预设丰富,适合小白
- 支持批量添加文件
- 可以设置完成后关机
4.3 Adapter (Mac)
macOS上最好用的免费转换工具:
- 拖放即可添加文件
- 简洁的界面设计
- 支持常见格式转换
- 可以设置输出质量
方法五:云端批量压缩
适合没有高性能电脑或需要在手机上操作的用户。
5.1 CloudConvert
专业的在线转换服务:
- 批量上传 - 支持同时转换多个文件
- API支持 - 可以集成到自动化流程
- 参数可调 - 支持自定义编码参数
- 免费额度 - 每天25次免费转换
使用流程:
- 访问cloudconvert.com
- 点击"Select Files"上传视频
- 选择输出格式(MP4/H.264)
- 点击齿轮图标调整质量
- 可以继续添加更多文件
- 点击"Start Conversion"
- 完成后下载所有文件
5.2 Compress.com
专注视频压缩的在线工具:
- 无需注册即可使用
- 支持拖放多个文件
- 自动选择最佳压缩参数
- 文件大小限制:200MB/文件
5.3 注意事项
- 隐私安全 - 敏感视频不建议上传云端
- 文件大小 - 免费服务通常有单文件限制
- 上传速度 - 大文件上传可能很慢
- 质量控制 - 多数云服务参数调节有限
5种方法对比
| 方法 | 难度 | 灵活性 | 速度 | 成本 | 适用场景 |
|---|---|---|---|---|---|
| FFmpeg脚本 | 高 | 极高 | 快 | 免费 | 技术用户、自动化需求 |
| HandBrake | 低 | 中等 | 中等 | 免费 | 普通用户、中等批量 |
| Shutter Encoder | 低 | 高 | 快 | 免费 | 大量文件、自动监控 |
| 批处理工具 | 低 | 中等 | 中等 | 免费 | Windows用户、简单需求 |
| 云端服务 | 极低 | 低 | 慢 | 部分收费 | 无本地电脑、少量文件 |
批量压缩最佳实践
1. 先测试后批量
用一个样本文件测试参数效果,满意后再批量处理:
- 选择一个代表性的视频(包含各种场景)
- 测试不同CRF值(如20、23、26)
- 对比文件大小和画质
- 确定最佳参数后再批量应用
2. 分类处理
不同类型视频用不同参数:
- 4K视频 → H.265 CRF 26,可降至1080P
- 1080P视频 → H.264 CRF 23,保持分辨率
- 720P视频 → H.264 CRF 25,保持分辨率
- 屏幕录制 → H.264 CRF 20,tune=stillimage
3. 保留原文件
批量压缩时建议:
- 将压缩后文件保存到单独文件夹
- 确认质量满意后再删除原文件
- 重要视频做好备份
4. 合理命名
设置清晰的文件命名规则:
- 添加后缀标识:
_compressed、_h265 - 标注分辨率:
_1080p、_720p - 记录参数:
_crf23
5. 监控进度
批量处理时注意:
- 定期检查是否有文件处理失败
- 监控CPU温度,避免过热
- 预估总时间,合理安排
- 可以设置完成后关机/休眠
常见问题
批量压缩时如何跳过已处理的文件?
在脚本中添加检查逻辑:
for file in *.mp4; do
output="compressed/${file%.*}_compressed.mp4"
if [ -f "$output" ]; then
echo "Skipping (already exists): $file"
continue
fi
# 压缩命令...
done
如何处理不同格式的输入文件?
脚本中匹配多种扩展名:
for file in *.{mp4,avi,mkv,mov,wmv,flv}; do
[ -e "$file" ] || continue
# 统一输出为MP4
ffmpeg -i "$file" ... "output/${file%.*}.mp4"
done
批量压缩会损坏文件吗?
极少情况下可能出现问题:
- 使用
-movflags +faststart确保文件完整性 - 在脚本中添加错误检查
- 压缩后验证文件可播放再删除原文件
如何限制批量压缩的CPU占用?
FFmpeg可以限制线程数:
ffmpeg -i input.mp4 -threads 4 -c:v libx264 ... output.mp4
或者在脚本中控制并发数量(见并行处理部分)。
批量压缩时如何保留原始文件信息?
使用-map_metadata参数:
ffmpeg -i input.mp4 -map_metadata 0 -c:v libx264 ... output.mp4
这会保留创建时间、作者、标题等元数据。
推荐组合方案:
- 日常少量文件(<20) → HandBrake队列
- 定期批量处理(20-100) → Shutter Encoder
- 大规模自动化(100+) → FFmpeg脚本 + 并行处理
- 混合类型文件 → 按类型分组 + 不同参数处理
进阶:自动化工作流
定时批量压缩
设置定时任务自动压缩新视频:
Linux Cron任务:
# 编辑crontab
crontab -e
# 每天凌晨2点执行压缩脚本
0 2 * * * /path/to/batch_compress.sh
Windows任务计划程序:
- 打开"任务计划程序"
- 创建基本任务
- 设置触发器(每天、每周等)
- 操作:启动程序 → 选择批处理脚本
云端自动处理
使用API实现自动化:
# CloudConvert API示例(Python)
import cloudconvert
cloudconvert.configure(api_key='your_api_key')
job = cloudconvert.Job.create(payload={
'tasks': {
'import-my-file': {
'operation': 'import/upload'
},
'convert-my-file': {
'operation': 'convert',
'input': 'import-my-file',
'output_format': 'mp4',
'options': {
'video_codec': 'h264',
'crf': 23
}
}
}
})
批量压缩视频的关键是选对工具和设置好参数。对于大多数用户,HandBrake和Shutter Encoder的图形界面已经足够强大;而技术用户可以通过FFmpeg脚本获得最大的灵活性和效率。无论选择哪种方法,记得先测试参数,再批量处理,并保留原文件直到确认质量满意。