第一张GIF图片使用stats_mode=full(默认)。在整个展示过程中背景都没有变化,结果是天空因为明智的颜色得到了更多的关注。另一方面,作为结果,文本的淡出遭到了破坏:
另一方面,第二张GIF图片是使用stats_mode=diff,这对移动物体很有帮助。事实上,文本淡出的表现更好,代价是天空的抖动产生了点小问题:
获得最佳的颜色映射输出paletteuse滤波器具有稍微多点的选项来操作。最明显的是抖动(dither选项)。唯一可有效预测的抖动是Bayer抖动,其它所有的抖动都是基于误差扩散。
如果你真的希望使用Bayer(因为你有速度或尺寸的限制),你可以使用bayer_scale选项来减小或增加它的方格图案。
pattern.
当然你同样可以通过使用dither=none来完全禁用抖动。
关于误差扩散抖动,你将会希望使用floyd_steinberg,sierra2和sierra2_4a。关于这些的详细信息,我将你重定向到这里DHALF.TXT.
对于懒惰的人,floyd_steinberg是最受欢迎的了,而sierra2_4a是sierra2(这个才是默认的)的一个快速/小型化的版本,扩散的原理是用三个像素来代替七个像素。heckbert是记录在我前面提到的论文中的一个,但只是作为参考文献引入的(你大概没想到)。
这里是不同的抖动模式的一个小预览:
原始的 (31.82K) :
dither=bayer:bayer_scale=1(132.80K):
dither=bayer:bayer_scale=2(118.80K):
dither=bayer:bayer_scale=3(103.11K):
dither=floyd_steinberg(101.78K):
dither=sierra2(89.98K):
dither=sierra2_4a(109.60K):
dither=none(73.10K):
最终,在使用了抖动之后, 你可能会对diff_mode选项感兴趣。在此引用一段话:
只有变化中的矩形区域会被预处理。这与 GIF的错切/偏移压缩机制比较类似。如果仅仅图像中的一部分在改变,这个选项有利于编码加速,并且该选项还通过一些方法限制误差扩散抖动的范围在矩形区域内,该矩形区域即是移动场景的边界 (如果场景变动不大,这更利于确定的输出同时,减小了移动噪声和输出更好地GIF压缩).
换句话说:如果想在图像里对背景使用误差扩散抖动,虽然背景是静态的,但可以通过这个选项限制误差在整幅图像的扩散。如下是与之相关的典型例子:
注意仅当顶部和底部的文本同时在动的时候,猴子的脸部图像是怎么抖动的。 (注意最后面几帧).
CentOS 5.6 上安装 FFMPEG
在Ubuntu下安装FFmpeg