☰
Constrict CLI使用教程:用constrict-cli命令行工具实现视频批量压缩自动化脚本
2026/10/27 1:46:07 网站建设 项目流程

【免费下载链接】Constrict

Read-only mirror of https://gitlab.gnome.org/World/Constrict

项目地址:https://gitcode.com/gh_mirrors/co/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/vp9h264
--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 把"视频压到指定大小"这件最繁琐的事变成了一条命令:

  1. python3 src/constrict_cli.py -i 输入 -s 目标MiB -o 输出单文件压缩
  2. for循环遍历目录,即得批量压缩脚本
  3. 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

项目地址:https://gitcode.com/gh_mirrors/co/Constrict
点击查看免费下载
上一篇:Dagger TypeScript SDK 类型别名 ModuleConfigClientID:对象标识符的强类型设计与模块客户端配置解析
下一篇:Terraform AWS Provider 6.23.0 深度解析:S3 桶 ABAC 标签治理、ECS Express Gateway 等新资源与关键增强

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询