问题就是你的解码,不是压缩过程。本来对的你觉得灰,现在压错了你觉得对了。
首先我要说的是你的这个源只要一句
AVISource("C:\ng1.avi")
就可以压264,你说输出YUY2需要加YV12应该是你解码器设置有误的问题,改成FFD解码MJPG并限定YV12输出即可
另外再来看一下你用的这两行
ConvertToRGB32
ConvertToYV12(matrix="PC.709")
matrix这个参数:
unspecified : Use Rec.601 coefficients, scaled to TV range [16,235]. 用601规则变换,做YC伸张或压缩
"PC.601" : Use Rec.601 coefficients, keep full range [0,255]. 用601规则变换,不做YC伸张或压缩
"Rec709" : Use Rec.709 coefficients, scaled to TV range. 用709规则变换,做YC伸张或压缩
"PC.709" : Use Rec.709 coefficients, keep full range. 用709规则变换,不做YC伸张或压缩
不论你ConvertToYV12用PC.709还是PC.601,都不做YC压缩,而不做YC压缩是肯定错的,上面说过了,你的播放设置有问题(放264不做YC伸张,放
MJPG时做YC伸张)。于是你看264时错错得正,所以你看起来才会和源一样亮,而实际上把这个结果给一个设置正常的人看是有问题的(色彩过浓)
。什么叫设置正常,上面说过了,限制FFD输出为RGB,把其它的钩去掉,或者用yv12输出+覆盖合成器。你先限制FFD输出为RGB再把你所谓“正确”的压制结果用播放器看看就知道了。
最后是709和601的问题,
经试验ConvertToRGB32默认相当与用参数 matrix="Rec601",所以你用709变换回去就不如601更接近源。