如何在命令行上将 webm(视频)转换为(动画)gif?

bru*_*ker 42 ffmpeg webm gif 14.04 convert-command

我想 ffmpeg 是首选的武器,但我没有找到如何达到我的目标。

Bar*_*ino 58

这里

ffmpeg -i input.webm -pix_fmt rgb24 output.gif
Run Code Online (Sandbox Code Playgroud)

  • **gifsicle** 是减小 gif 大小的绝佳工具`gifsicle -O2 input.gif -o output.gif` (6认同)
  • gif 不支持 `rgb24`,ffmpeg 会自动使用 `rgb8`。 (5认同)
  • 哇!有用!并且.. 2.6 MB webm -> 48 MB gif ^^ - 有没有想过减少这个? (3认同)
  • @brubaker 我想我打败了你:120K `.webm` → 2.7G `.gif`。是的,那是带有 *G* 的。 (2认同)

Ray*_*bel 26

巴拉夫的回答是可以的。但是,生成的 gif 可能存在颜色转换问题,因为 ffmpeg 在Incompatible pixel format 'rgb24' for codec 'gif'. 这是我发现的作品:

首先,创建 PNG 调色板:

ffmpeg -y -i input.webm -vf palettegen palette.png
Run Code Online (Sandbox Code Playgroud)

然后,使用调色板生成 gif:

ffmpeg -y -i input.webm -i palette.png -filter_complex paletteuse -r 10 output.gif
Run Code Online (Sandbox Code Playgroud)

来源:

隐蔽 MP4/Webm - ubuntubuzz.com

  • 在我的案例中产生了比接受的答案更好的结果 (2认同)

小智 16

扩展 Raynal 的答案,这里有一个可以添加的脚本.bashrc来进行转换:

function webm2gif() {
    ffmpeg -y -i "$1" -vf palettegen _tmp_palette.png
    ffmpeg -y -i "$1" -i _tmp_palette.png -filter_complex paletteuse -r 10  "${1%.webm}.gif"
    rm _tmp_palette.png
}
Run Code Online (Sandbox Code Playgroud)

例如

webm2gif recording.webm
Run Code Online (Sandbox Code Playgroud)

将创建recording.gif.