【免费下载链接】Constrict
Read-only mirror of https://gitlab.gnome.org/World/Constrict
Constrict是一款"指定目标大小、自动压缩到位"的开源视频压缩工具。除了图形界面,它还自带命令行工具constrict-cli(源码位于 src/constrict_cli.py),一条命令就能把视频压到指定 MiB 大小——本文带你掌握它的全部参数,并写出一个真正的视频批量压缩自动化脚本。
为什么选择 Constrict:告别手动试错调码率
手动压缩视频最痛苦的就是猜码率:调高一点文件超限,调低一点画质崩盘。Constrict 的思路完全不同——
- 只给目标,不给码率:你只需说"我要 10 MiB",它会自动计算平均码率(ABR)、分辨率、帧率和音频质量
- 多轮迭代:压完一轮不满意就换参数再来,直到输出落在目标范围内(核心逻辑见 src/constrict_utils.py 中的
compress函数) - 本地处理:全程离线,视频不上传任何在线服务
获取 constrict-cli 命令行工具
constrict-cli随源码提供,无需图形界面依赖,准备好ffmpeg/ffprobe即可直接使用:
# 克隆 Constrict 源码仓库 git clone https://gitcode.com/gh_mirrors/co/Constrict # 确认 ffmpeg 与 ffprobe 已安装 ffmpeg -version ffprobe -version # 查看帮助信息 python3 src/constrict_cli.py -h💡 如果你已装好 GNOME 图形界面版(Flatpak 包名为
io.github.wartybix.Constrict),也可以继续用 GUI 管理日常压缩,CLI 则留给批量和自动化场景。
一键压缩:constrict-cli 参数速查
constrict-cli有三个必填参数:-i输入文件、-s目标大小(MiB)、-o输出路径。其余为可选参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
-i <文件> | 要压缩的视频路径(必填) | — |
-s <MiB> | 目标文件大小(必填) | — |
-o <路径> | 压缩后输出路径(必填) | — |
-t <百分比> | 允许低于目标的容差,如 25 表示最小压到目标的 75% | 25 |
--framerate | 帧率策略:auto/prefer-clear(清晰优先 30fps)/prefer-smooth(流畅优先 60fps) | auto |
--codec | 编码器:h264/hevc/av1/vp9 | h264 |
--extra-quality | 提高画质,代价是更长的编码时间 | 关 |
--software-encode | 强制软编码,不使用 GPU | 关 |
最简用法,把一段录像压到 10 MiB:
python3 src/constrict_cli.py \ -i ~/Videos/demo.mp4 \ -s 10 \ -o ~/Videos/compressed/demo.mp4运行后终端会实时显示Attempt N -- 码率 (分辨率@帧率)和进度百分比、剩余时间(ETA),最终输出一行Video compressed to X MiB.表示完成。
批量压缩脚本:for 循环搞定整个目录
有了 CLI,批量压缩只需要一个for循环。以下脚本会把~/Videos/to_compress下所有.mp4压到 10 MiB,输出到~/Videos/compressed,并用--extra-quality尽量保住画质:
#!/bin/bash # batch_compress.sh —— Constrict 视频批量压缩脚本 SRC_DIR=~/Videos/to_compress OUT_DIR=~/Videos/compressed TARGET=10 # 每个视频的目标大小(MiB) mkdir -p "$OUT_DIR" for f in "$SRC_DIR"/*.mp4; do echo ">>> 开始压缩: $(basename "$f")" python3 src/constrict_cli.py \ -i "$f" \ -s "$TARGET" \ -t 25 \ -o "$OUT_DIR/$(basename "$f")" \ --extra-quality done echo "全部完成,输出目录: $OUT_DIR"执行方式:
bash batch_compress.sh几个实用的小技巧:
- 按文件大小差异化压缩:循环里加一行
[ $(stat -c%s "$f") -lt 10485760 ] && continue,跳过本来就不超过 10 MiB 的文件 - 换编码格式:想批量输出 HEVC 高压缩率版本,给命令追加
--codec hevc - 长任务交给后台:
nohup bash batch_compress.sh > compress.log 2>&1 &,睡前挂上,早上收作业
常见问题与注意事项
- 输出比目标大很多怎么办?压缩是"尽力而为":源视频时长越长、目标越小,画质损失越明显;极端情况下可能压不到位,可适当放宽
-s或调大-t - 30fps 以下视频用
--framerate有效吗?对 30 FPS 及以下的源视频,三个选项效果相同;压到极低码率时帧率也会被自动限制在 24 FPS - 编码慢?默认会优先用 GPU 硬件编码;需要 CPU 编码时加
--software-encode,追求画质则加--extra-quality - 想保留原文件?
-o指定新路径即可,源文件不会被修改
总结:三行命令,从手动到自动化
Constrict CLI 把"视频压到指定大小"这件最繁琐的事变成了一条命令:
python3 src/constrict_cli.py -i 输入 -s 目标MiB -o 输出单文件压缩for循环遍历目录,即得批量压缩脚本nohup挂后台,长视频批量任务交给机器慢慢跑
再配合-t容差、--codec、--extra-quality等参数微调,无论是应付上传平台的文件大小限制,还是日常批量整理家庭录像,都能又快又稳地完成。
核心文件路径参考
- CLI 工具源码:src/constrict_cli.py
- 压缩核心逻辑:src/constrict_utils.py
- 构建配置(meson):meson.build
【免费下载链接】Constrict
Read-only mirror of https://gitlab.gnome.org/World/Constrict
相关推荐
Franc CLI命令行工具完全指南:批量处理与自动化脚本
Franc CLI命令行工具完全指南:批量处理与自动化脚本 Franc CLI是一个强大的自然语言检测命令行工具,能够快速识别文本的语言类型。作为开源项目fra
NLPawesome-opensource-hardware完全指南:10个必备开源硬件工具助你快速入门
awesome opensource hardware完全指南:10个必备开源硬件工具助你快速入门 awesome opensource hardware是一个
文档知识库硬件开发LangGraph CLI工具:命令行界面使用与自动化脚本编写
LangGraph CLI工具:命令行界面使用与自动化脚本编写 引言:为什么需要LangGraph CLI? 在现代AI应用开发中,LangGraph作为构建复
人工智能AI AgentAgent 框架多智能体
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考