You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg应用SMPTE170M传递函数异常的问题排查与修正方法咨询

FFmpeg应用SMPTE170M传递函数异常的问题排查与修正方法咨询

我最近在尝试用FFmpeg给示例输入应用SMPTE170M OETF,试了两种命令组合,但都没得到预期的结果,想请教下怎么修正。具体情况如下:

尝试的命令及问题

命令1

ffmpeg -y -framerate 25 -i linear.png -sws_flags accurate_rnd+full_chroma_int \
-vf "zscale=min=gbr:tin=linear:m=gbr:t=smpte170m" out1.png

这个命令输出的转换值比手动计算的高很多。比如当通道值为200时,按照规范计算:

V=200/255
1.099*V^.45 - 0.099 = 0.886185722(对应226)
但FFmpeg输出的结果是231,而且不管哪个通道输入值相同,输出都是这个数。

命令2

ffmpeg -y -framerate 25 -i linear.png -sws_flags accurate_rnd+full_chroma_int \
-vf "colorspace=iall=bt709:itrc=linear:all=bt709" out2.png

这个命令的输出值会随通道变化。我知道colorspace滤镜前后会有RGB→YUV→RGB的转换,但不清楚为什么会导致这么大的差异。比如当每个通道输入值都是200/255时,得到的结果如下:

  • 0,0: (237,62,0) #ED3E00 srgb(237,62,0)
  • 0,0: (0,208,0) #00D000 srgb(0,208,0)
  • 0,0: (0,46,232) #002EE8 srgb(0,46,232)
  • 0,0: (226,226,226) #E2E2E2 srgb(226,226,226)
    值得注意的是,灰度值的结果正好是我预期的正确值。

请问该如何修改其中一个或两个命令,以得到预期的结果?

备注:内容来源于stack exchange,提问作者revane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:37:57