使用ffmpeg压缩和转换图片及视频。适用于用户希望减小文件体积、更改格式、调整尺寸或优化媒体文件的场景。
媒体压缩 skill. 压缩并转换图像和视频, 并带有智能默认值. 支持单文件及批处理. 支持格式. 图像: JPG, PNG, WebP, BMP, TIFF
功能概述
媒体压缩 skill. 压缩并转换图像和视频, 并带有智能默认值. 支持单文件及批处理. 支持格式. 图像: JPG, PNG, WebP, BMP, TIFF是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
媒体压缩技能
使用智能默认参数对图像和视频进行压缩与格式转换。支持单文件处理及批量处理。
支持的格式
图像: JPG、PNG、WebP、BMP、TIFF、GIF → JPG、PNG、WebP
视频: MP4、MOV、AVI、MKV、WebM、FLV、WMV、M4V → MP4
前置条件
必须已安装 ffmpeg:
- Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg - macOS:
brew install ffmpeg - Windows:从 https://ffmpeg.org/download.html 下载并添加至系统 PATH
验证安装是否成功:ffmpeg -version
快速开始
图像压缩
# 压缩至目标大小(自动调节质量) python scripts/compress_image.py photo.jpg --max-size 200kb # 调整尺寸 + 压缩 python scripts/compress_image.py photo.png --width 800 --output photo_small.jpg # 转换为 WebP(更高压缩率) python scripts/compress_image.py photo.jpg --format webp # 批量压缩整个文件夹 python scripts/compress_image.py ./photos --output ./compressed --quality 80 # 预览模式 —— 查看操作效果,不实际执行压缩 python scripts/compress_image.py photo.jpg --max-size 500kb --preview # 保留原始文件备份 python scripts/compress_image.py photo.jpg --max-size 500kb --backup
视频压缩
# 使用默认参数压缩(良好的质量与体积平衡) python scripts/compress_video.py video.mp4 --output video_small.mp4 # 调整高度至 720p python scripts/compress_video.py video.mp4 --height 720 # 指定目标文件大小(近似值) python scripts/compress_video.py video.mp4 --target-size 50mb # 降低质量以获得更小体积 python scripts/compress_video.py video.mp4 --crf 28 # 批量处理文件夹中所有视频 python scripts/compress_video.py ./videos --output ./compressed --height 480 # 预览模式 —— 查看操作效果,不实际执行压缩 python scripts/compress_video.py video.mp4 --height 720 --preview # 保留原始文件备份 python scripts/compress_video.py video.mp4 --height 720 --backup
常见使用场景
1. 网站上传(图像)
多数网站要求图像小于 500KB:
python scripts/compress_image.py photo.jpg --max-size 500kb --format webp
2. 邮件附件(图像)
邮件附件通常有 25MB 限制:
python scripts/compress_image.py scan.pdf.jpg --max-size 5mb --quality 90
3. 社交媒体视频
平台通常推荐 720p 分辨率与较小体积:
python scripts/compress_video.py clip.mov --height 720 --crf 23 --preset fast
4. 存档旧视频
最大化压缩以节省存储空间:
python scripts/compress_video.py old_video.avi --crf 28 --preset slow --height 480
5. 仅格式转换
保持画质不变,仅更改容器或编码格式:
# 图像 python scripts/compress_image.py image.png --format jpg --quality 95 # 视频 python scripts/compress_video.py video.mov --output video.mp4 --crf 18
参数参考
图像(compress_image.py)
| 参数 | 说明 | 默认值 |
|---|---|---|
input |
输入文件或目录(必填) | - |
--output, -o |
输出文件或目录 | 自动生成 |
--max-size |
目标最大文件大小(例如:500kb、2mb) | None |
--quality, -q |
JPEG/WebP 质量(1–100) | 85 |
--width, -w |
最大宽度(像素) | 原始尺寸 |
--height |
最大高度(像素) | 原始尺寸 |
--format, -f |
输出格式:jpg、png、webp | 原始格式 |
--no-strip |
保留元数据(默认:移除) | False |
--preview, -p |
预览模式:仅显示设置,不执行压缩 | False |
--backup, -b |
保留原始文件备份 | False |
视频(compress_video.py)
| 参数 | 说明 | 默认值 |
|---|---|---|
input |
输入文件或目录(必填) | - |
--output, -o |
输出文件或目录 | 自动生成 |
--crf |
质量参数(0–51),数值越低质量越高:18 = 视觉无损,23 = 默认,28 = 更小体积 | 23 |
--preset |
编码速度:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow | medium |
--height |
最大高度(480、720、1080) | 原始尺寸 |
--target-size |
近似目标大小(例如:50mb、1gb) | None |
--fps |
限制帧率(例如:30、24) | 原始帧率 |
--audio-bitrate |
音频码率(例如:128k、192k) | 128k |
--preview, -p |
预览模式:仅显示设置,不执行压缩 | False |
--backup, -b |
保留原始文件备份 | False |
质量建议
图像
- 90–95:高质量,几乎不可见压缩伪影
- 85:理想平衡点(默认值)—— 画质良好,体积显著减小
- 70–80:适用于网页,体积更小
- 50–60:低质量,可见明显伪影
视频(CRF)
- 17–18:视觉无损,适合归档
- 20–22:高质量,适用于专业用途
- 23:默认值,兼顾质量与体积(推荐)
- 28:更小体积,质量仍可接受
- 35+:低质量,仅适用于预览或草稿
编码预设(Presets)
- ultrafast:最快编码,生成文件最大
- fast:快速出结果,文件略大
- medium:默认平衡点
- slow:更好压缩率,文件更小
- veryslow:最高压缩率,文件最小
批量处理
当输入为目录时:
- 处理该目录下所有受支持的文件
- 输出目录结构与输入目录一致
- 逐个显示每个文件的处理进度
- 同时显示原始大小与压缩后大小
示例:
$ python scripts/compress_image.py ./vacation_photos --output ./compressed --max-size 500kb 找到 24 个图像文件 [1/24] 处理: IMG_001.jpg ✓ 2847.3KB → 456.2KB (84.0% 减少) [2/24] 处理: IMG_002.png ✓ 1532.1KB → 298.5KB (80.5% 减少) ...
故障排查
“ffmpeg not found”
请先安装 ffmpeg:
# Ubuntu/Debian sudo apt update && sudo apt install ffmpeg # macOS brew install ffmpeg
“Permission denied”
赋予脚本可执行权限:
chmod +x scripts/*.py
质量过低
提高质量参数:
# 图像 python scripts/compress_image.py photo.jpg --quality 90 # 视频 python scripts/compress_video.py video.mp4 --crf 20
文件未变小
- 尝试进一步降低质量或缩小分辨率
- 部分文件可能已处于最优压缩状态
- 使用
--max-size强制指定目标大小
批量处理中断
请检查目录中所有文件是否均为有效图像/视频。损坏文件可能导致处理失败。
进阶技巧
- 剥离元数据(默认行为),保障隐私安全
- 优先选用 WebP 格式,获得最佳网页压缩效果
- 720p 高度 通常已足够满足移动端观看需求
- CRF 23 + preset slow 组合在归档场景中效果极佳
- 批量处理前,务必先用单个文件测试
参考资料
- FFmpeg Guide —— 详尽的 ffmpeg 命令与参数说明
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章