使用ffmpeg制作gif动画
时间:2023-05-19 14:58:50.751 +0800 CST 浏览:235
ffmpeg -ss 0.0 -i test.mov -an -filter_complex "[0:v]trim=start_frame=0:end_frame=75,fps=5,scale=320:-1:flags=lanczos,split[a][b];[a]palettegen[p];[b][p] paletteuse[out0],[0:v]trim=start_frame=195:end_frame=265,fps=5,scale=320:-1:flags=lanczos,split[a][b];[a]palettegen [p];[b][p] paletteuse=[out1]" -map "[out0]" 1f.gif -map "[out1]" 2.gif -y

下面是该命令各部分的解释:

  • -ss 0.0:将起始时间偏移量设置为0秒
  • -i test.mov:指定输入视频文件名
  • -an:禁用音频处理
  • -filter_complex:对视频帧应用复杂的滤镜图
  • "...":指定滤镜图滤镜链
  • [0:v]trim=start_frame=0:end_frame=75,fps=5,scale=320:-1:flags=lanczos,split[a][b];:选择视频流([0:v])并对其应用多个滤镜:
    • trim=start_frame=0:end_frame=75:选择从开始到第75帧的帧
    • fps=5:将输出帧率设置为每秒5帧
    • scale=320:-1:flags=lanczos:将帧重新缩放为320像素宽度,同时保持宽高比并使用Lanczos缩放算法
    • split[a][b];:将过滤后的帧分成两个输出([a][b]),稍后将使用它们
  • [a]palettegen[p];:选择来自第一个输出([a])的帧并生成一个颜色调色板(palettegen),该调色板将用于创建动画GIF
  • [b][p] paletteuse[out0],:选择来自第二个输出([b])的帧,并应用之前生成的调色板(paletteuse)来创建一个动画GIF([out0]
  • [0:v]trim=start_frame=195:end_frame=265,fps=5,scale=320:-1:flags=lanczos,split[a][b];:选择视频流([0:v])并对其应用多个滤镜:
    • trim=start_frame=195:end_frame=265:选择从第195帧到第265帧的帧
    • fps=5:将输出帧率设置为每秒5帧
    • scale=320:-1:flags=lanczos:将帧重新缩放为320像素宽度,同时保持宽高比并使用Lanczos缩放算法
    • split[a][b];:将过滤后的帧分成两个输出([a][b]),稍后将使用它们
  • [a]palettegen [p];:选择来自第一个输出([a])的帧并生成一个颜色调色板(palettegen),该调色板将用于创建第二个动画GIF
  • [b][p] paletteuse=[out1]":选择来自第二个输出([b])的帧,并应用之前生成的调色板(paletteuse)来创建另一个动画GIF([out1]
  • -map "[out0]" 1f.gif:将第一个输出([out0])映射到文件1f.gif
  • -map "[out1]" 2.gif:将第二个输出([out1])映射到文件2.gif
  • -y:在不要求确认的情况下覆盖输出文件

总体而言,这个命令从输入视频文件中提取了两组帧,对每组帧应用了颜色调色板,并创建了两个宽度为320像素、每秒5帧的动画GIF(分别命名为1f.gif2.gif)。



如果这篇文章对你有所帮助,可以通过下边的“打赏”功能进行小额的打赏。

本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理。


来说两句吧