ffmpeg 使 gif 文件过大

All*_*ang 8 ffmpeg

我正在尝试通过 ffmpeg 从视频制作 gif,但输出的 gif 文件太大。

'/usr/bin/ffmpeg' '-ss' '00:00:00.00' '-t' '5' '-i' '/htdocs/vv.mp4' '-vf' 'scale=480:-1' '-gifflags' '+transdiff' '-y' '/htdocs/gg.gif'

输入文件大小仅为 259k,输出文件大小为 1.7M。

有没有一种简单的方法可以降低 gif 大小?

小智 3

我也遇到同样的问题这么久了。您可以采用以下几种方法作为解决方案:

  1. 降低分辨率:您已经通过缩放视频来做到这一点。但是,如果视觉质量不是首要任务,您可以进一步降低分辨率。

  2. 优化调色板:GIF 使用有限的调色板(最多 256 种颜色)。您可以通过ffmpeg首先从视频生成调色板,然后使用该调色板创建 GIF 来优化它,而不是允许选择调色板。就是这样:

    '/usr/bin/ffmpeg' -ss '00:00:00.00' -t '5' -i '/htdocs/vv.mp4' -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" -y '/htdocs/palette.png'
    '/usr/bin/ffmpeg' -ss '00:00:00.00' -t '5' -i '/htdocs/vv.mp4' -i '/htdocs/palette.png' -lavfi "fps=10,scale=480:-1:flags=lanczos [x]; [x][1:v] paletteuse" -y '/htdocs/gg.gif'
    
    Run Code Online (Sandbox Code Playgroud)

    在上面的示例中,fps=10参数将 GIF 设置为每秒 10 帧,这通常足以满足 GIF 的需要,并且有助于减小尺寸。

这个方法对我减小gif尺寸有很大帮助;我尝试使用明显受限的调色板。

  1. 降低帧速率:如上一点所示,降低每秒帧数 (fps) 将减少 GIF 中的帧数,从而减小其大小。

这个方法对我也有很大的帮助。虽然 gif 不像以前那么有用,但大小是我最关心的问题。

  1. 修剪不必要的部分:您已经使用-ss-t参数来选择视频的特定片段。确保将视频修剪为仅最重要的部分,这样就不会包含任何不必要的帧。

  2. 使用 GIF 优化工具:创建 GIF 后,您可以使用专用的 GIF 优化工具来进一步减小其大小。Gifsicle等工具尤其有效。

另外,我应该提到的是,GIF 格式的性质意味着它在存储视频数据方面并不是特别有效,因此在保持可接受的视觉质量的同时,可以压缩的程度是有限的。考虑使用视频格式(例如 WebM 或 MP4)来制作更长或高质量的动画,因为它们通常比 GIF 更有效。