GIF的大小太高了?


3

我正在尝试从MP4视频文件中提取GIF。

现在我有两个modi,我这样做:

1)常规的:

ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -s 320x174 -filter_complex "fps=15" output.gif

它给出了一个1.6MB大小的文件。

和2)

ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

这给了一个更好看的方式,但4.5MB(增加181%)大文件。它使用我创建的16x16调色板文件

ffmpeg -y -t 7.7 -ss 00:22:53 -i video.mp4 -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png

现在我不太清楚相同fps,持续时间和分辨率的2个GIF如何在尺寸上有如此巨大的差异。我的直觉是,他们应该是一样的。为什么会出现这种差异?有没有办法在不损失质量的情况下将2)的尺寸减小到1)?

谢谢


1
我不认为你的第一个命令使用了调色板文件。从创建的GIF创建调色板图像,并将其与第3个命令的调色板进行比较。
吉安

这是故意的。关键是,两者都使用256种颜色的2种不同调色板(第一种是标准的,第二种是生成的),但尺寸差别很大。
nfisher

是的,从标准调色板中使用的颜色较少,并且它们被重复使用,因此LZW可以更有效地压缩它。通过定制的调色板,使用更均匀地分布在256种可用选项中。
吉安

想象一下,你想用8色调制作灰度图像的GIF。调色板A有黑色,白色和6种红色和蓝色。调色板B有从黑色到白色的斜坡。GIF编码器将仅使用调色板A中的黑色和白色,因此压缩器必须表示两个条目的出现。从调色板B开始,所有样品都会在不同程度上使用。
吉安

Answers:


3

由于GIF的工作方式,调色板越复杂,生成的gif变得越来越快。

我会使用GIMP来优化#2中产生的GIF - 不是100%确定它是如何工作的,但是认为它基本上删除了从一帧到下一帧的重复信息。

GIMP截图


好吧,使用的调色板是16x16像素,这导致256个数据点。就我而言,只要所使用的两个调色板大小相同(并且其他一切都相同),所得到的GIF在大小上应该完全不同。
nfisher

2
对我对该主题的不完全了解表示歉意,但我认为它与GIF压缩系统(LZW)的工作方式有关:例如,可能是两个不同的调色板导致不同的抖动水平 - 抖动是随机的通过混合来自有限调色板的类似和可用颜色来近似颜色时产生的点图案。抖动与GIF文件大小相关,因为它会中断有助于高效LZW压缩的平面颜色的干净区域,并且可以使文件大小超出其需要的大小。
HydroxCookieHoax 2016年

1
你肯定比我更了解主题。感谢您的评论。我认为,当使用更多颜色的给定调色板时,抖动会增加文件大小,正如Mulvya建议的那样。
nfisher
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.