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