使用 ffmpeg,如何将 MP4、裁剪和调整大小转换为 GIF?

Joe*_* Z. 5 ffmpeg

我想 ffmpeg 抓取 1280x720 MP4 视频文件,裁剪到正方形大小比例,将其调整为 640x640

以下两个命令对我有用,具有出色的 GIF 质量,但只是缺少正确的调整大小。它确实给了我一个 GIF 输出,但大小是 1138x640 而不是 640x640。

生成调色板:

ffmpeg -y -ss 30 -t 3 -i input.mp4 \
-vf fps=10,scale=1138:-1:flags=lanczos,palettegen palette.png
Run Code Online (Sandbox Code Playgroud)

使用调色板输出 GIF:

ffmpeg -ss 30 -t 3 -i input.mp4 -i palette.png -filter_complex \
"fps=10,scale=1138:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
Run Code Online (Sandbox Code Playgroud)

这给了我一个 1138x640.gif,但是如何在不依赖另一个单独命令的情况下将它变成 640x640?

llo*_*gan 5

这是一种适用于 1280x720 输入的简单方法。

生成调色板:

ffmpeg -i input.mp4 -filter_complex "fps=10,scale=-1:640,crop=ih:ih,setsar=1,palettegen" palette.png
Run Code Online (Sandbox Code Playgroud)

创建 GIF:

ffmpeg -i input.mp4 -i palette.png -filter_complex "[0]fps=10,scale=-1:640,crop=ih:ih,setsar=1[x];[x][1:v]paletteuse" output.gif
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以通过添加force_aspect_ratio缩放选项使任意输入大小适合 640x640,并添加 split 和 fifo以避免制作临时调色板文件,从而使这更复杂。

  • 非常感谢您的回答。我接受了你的答案,但为了更精确的裁剪,我将如何改变裁剪发生的位置?假设我想将视频从左侧裁剪 20 像素,从顶部裁剪 10 像素。 (2认同)