Composer本身无色彩管理功能,不接触像素或ICC等标准;偏色问题实际源于FFmpeg参数缺失、php-ffmpeg未设colorspace、Ghostscript未配置CMYK转换或系统时间不同步导致降级使用旧版有bug的依赖。

Composer 本身没有“颜色管理器”,也不遵循任何色彩标准(如 ICC、ACES、sRGB)——它不是图像处理或视频渲染工具,不接触像素、不解析元数据、不嵌入配置文件。
为什么查不到 Composer 的色彩管理文档
因为根本不存在。所有关于“Composer 颜色管理”的搜索结果,实际指向三类完全无关的场景:
- SOLIDWORKS Composer:工业 3D 可视化软件,导出视频时需手动设置
color_primaries、colorspace等 FFmpeg 参数 - Pixel-Composer:像素特效编辑器,靠
Colorize、HSL Adjust等节点做后期覆盖,无色彩空间转换能力 - Jetpack Compose(Android):UI 框架,
Surface或Modifier.background控制的是组件绘制色,和监看/导出偏色无关
导出后偏色的真实责任链
偏色永远发生在下游工具链,Composer 只是把相关包(比如 php-ffmpeg)拉到 vendor/ 目录。真正干活的是:
-
ffmpeg命令本身:默认不写-colorspace bt709,播放器可能按smpte170m解析 -
php-ffmpeg封装:未调用$video->setVideoColorSpace('bt709'),就等于没传参数 -
Ghostscript转 PDF→PNG:漏了-dUseCIEColor或-sOutputICCProfile,CMYK 到 RGB 映射失真 - 系统时间偏差 >15 分钟:触发 Composer 包签名验证失败,自动 fallback 到旧版有 bug 的转码逻辑(见
signature verification failed错误)
怎么快速验证是不是 Composer 招的祸
执行这三步,5 秒内排除 Composer 责任:
- 进
vendor/bin/ffmpeg所在目录,直接运行ffmpeg -i input.mp4 -v debug -f null -,搜日志里有没有color_primaries字段 - 检查你代码里是否显式写了
setVideoColorSpace或等效参数;没写 = 默认行为 = 极大概率偏色 - 运行
date和timedatectl status,确认系统时间与 NTP 同步;不同步就先修时间,再composer update
最容易被忽略的是:你以为在调“Composer 颜色”,实际连 FFmpeg 进程都没亲手敲过命令——所有偏色问题,都卡在你没碰过的那层封装或参数上。


















