You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg将MP4裁剪并调整为640x640的GIF?

解决FFmpeg将1280x720 MP4转为640x640正方形GIF的问题

你的核心问题是没先把16:9的原视频裁剪为正方形,直接缩放时保留了原比例,才得到1138x640的结果。要在单命令里完成裁剪→缩放→高质量GIF生成,可以用FFmpeg的filter_complex把所有操作串起来,不需要单独生成调色板的额外命令。

完整的单命令解决方案

ffmpeg -i input.mp4 -filter_complex "[0:v]crop=720:720:280:0,scale=640:640[v];[v]palettegen[pal];[v][pal]paletteuse" output.gif

命令拆解说明

  1. 裁剪为正方形:
    原视频是1280x720(16:9),要得到正方形,我们以高度720为基准,把宽度裁剪到720。左右两侧需要各裁剪(1280-720)/2 = 280像素,所以crop=720:720:280:0的含义是:

    • 第一个值720:裁剪后的宽度
    • 第二个值720:裁剪后的高度
    • 第三个值280:裁剪起始的X坐标(从左往右数280像素开始,实现居中裁剪)
    • 第四个值0:裁剪起始的Y坐标(从顶部开始)
      如果不想居中裁剪,比如要保留左侧内容,把第三个值改成0;保留右侧则改成560(1280-720)即可。
  2. 缩放到640x640:
    裁剪后的720x720正方形视频,通过scale=640:640直接缩放到目标尺寸,画面不会变形。

  3. 高质量GIF生成:
    通过palettegen生成优化的调色板,再用paletteuse结合调色板生成高质量GIF,这部分整合在同一个滤镜链里,不需要单独执行调色板生成命令。

可选参数调整

如果需要优化GIF的帧率、循环次数,可以在命令里添加额外选项:

  • 添加-r 15:设置GIF帧率为15(降低帧率可以减小文件体积)
  • 添加-loop 0:设置GIF无限循环(默认就是无限循环,若要循环N次改成-loop N)

内容的提问来源于stack exchange,提问作者Joel Z.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:24:04