FFmpeg 制作 gif

  下面的 wangZiMei.mp4 来自抖音下载的丸子妹的视频

一、表情包制作

1、最简单的方式 —— 全部转换

ffmpeg -i wangZiMei.mp4 wzm-1.gif

  上面的方式,会将整个视频转成 gif,并且文件大小 离了个特朗普,视频大小 3.58 M,转换之后的 gif 大小为 111 M;

2、截取某段时间视频

  上面第一种方式是将整个视频转换 gif,但是真正想要用作表情包的片段可能就几秒钟,因此添加两个参数:

 -ss:指定视频的开始时间
 -t:指定从开始时间截取的时长

  两个参数并非必须一起使用,省略 -ss 表示从 0 秒开始,省略 -t 则是从当前 -ss 开始时间直到视频结束;例如从第 7.4 秒开始,截取 3 秒钟的区域,对应指令如下:

ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 wzm-2.gif

  上面两个参数时间单位是 ,存在两种表现格式:

[HH]:[mm]:SS.[sss] 时分秒格式,除了秒数,其他的可以省略;例如 01:50 (1分50秒)
S.[sss] 秒数格式;例如 7.4 秒;110 秒(1分50秒)

3、调整图片尺寸

  上面的截取一段区域,文件还是有 17.8 M,比完整的视频文件还大,因此添加 -s 参数,用于指定图片的宽高,此时 gif 如下,大小为 1.35 M;

ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -s 180x320 wzm-3.gif

  而除了上面的 -s 指定宽高,还可以通过 filter 控制 scale 参数达到缩放效果;

# 指定宽 180、高 320
ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf scale=w=180:h=320 wzm-3.gif
# 省略宽高参数 w、h
ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf scale=180:320 wzm-3.gif
# 省略宽高参数 w、h;以 -1 代替高,将根据视频的分辨率和指定的宽度 180,按比例计算出高度值
ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf scale=180:-1 wzm-3.gif
# 省略宽高参数 w、h;以 -1 代替宽,将根据视频的分辨率和指定的高度 320,按比例计算出宽度值
ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf scale=-1:320 wzm-3.gif

  4、截取视频指定区域

  作为一个合格的表情包,常见的是正方形,因此,基于上面的调整尺寸之后,再加入 filter 的 crop 参数,裁切出指定的像素区域:

ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf scale=w=180:h=320,crop=w=180:h=180:x=0:y=40 wzm-4.gif
  • w: 宽度
  • h:高度
  • x:裁切开始的 x 坐标(左 0 右 宽)
  • y:裁切开始的 y 坐标(上 0 下 高)

  5、调整帧数

  当不指定帧数时、生成的 gif 使用的是原视频的帧数,此处为 FPS 为 30,此时可以通过如下方式,将 gif 的帧数调成 15

# 使用 -r 参数指定帧数为 15
ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -r 15 -vf scale=w=180:h=320,crop=w=180:h=180:x=0:y=40 wzm-5.gif
# 使用 filter 的 fps 参数指定帧数为 15
ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf fps=15,scale=w=180:h=320,crop=w=180:h=180:x=0:y=40 wzm-5.gif

二、gif 图高清处理

  上面生成的图片,虽然大小减少了,但是对应清晰度也降低了;因此,调整缩放为 spline 算法先生成 16 x 16 像素的调色板图片;

ffmpeg -i wangZiMei.mp4 -vf "fps=15,crop=w=720:h=720:x=0:y=160,scale=180:320:flags=spline,palettegen" wzm-调色板.png

  注意使用上面的指令时; -ss 指令不要加上,否则无法生成图片;而 crop 裁剪参数也需要放在 scale 前面;但是放在前面的时候是以还未缩放时的尺寸裁剪的;

  而是用下面的指令通过调色板图片生成高清动图时,最好把 crop 放在后面;测试时发现放在 scale 前面生成的 gif,播放时被拉伸了

ffmpeg -i wangZiMei.mp4 -i wzm-调色板.png -ss 7.400 -t 3 -filter_complex "fps=15,scale=180:320:flags=spline[a];[a][1:v] paletteuse,crop=w=180:h=180:x=0:y=40" wzm-6.gif

  如下指令,可以实现上面两条指令的同样效果:

ffmpeg -i wangZiMei.mp4 -ss 7.400 -t 3 -vf "fps=15,scale=180:320:flags=spline,split[a][b];[a]palettegen[p];[b][p]paletteuse,crop=w=180:h=180:x=0:y=40" wzm-6.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容