Ffmpeg 回旋镖效果转为 GIF

Ffmpeg 回旋镖效果转为 GIF

我有一个输入视频 mp4。我需要创建一个 2 秒的输出媒体,其中 1 秒前进,1 秒后退(回旋镖效果),如果我将输出也设置为 mp4,效果会很好,但我需要将其输出设置为 GIF。我该怎么做?

ffmpeg -t 1 -i input.mp4 -filter_complex "[0]reverse[r];[0][r]concat,loop=1:2,setpts=N/25/TB" output.mp4

答案1

基本 GIF 示例

使用撤销连接过滤器:

ffmpeg -i input.mp4 -filter_complex "[0]reverse[r];[0][r]concat=n=2:v=1:a=0" output.gif

GIFffmpeg默认会永远循环,因此您不需要添加任何循环选项。

高质量 GIF 示例

使用撤销连接分裂调色板, 和调色板使用过滤器:

ffmpeg -i input.mp4 -filter_complex "[0]reverse[r];[0][r]concat=n=2:v=1:a=0,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif

改编自如何使用 ffmpeg 将视频转换为 GIF 并获得合理的质量?

通过缩小尺寸和降低帧速率来减小文件大小

与上面相同,但规模每秒帧数添加的过滤器:

ffmpeg -i input.mp4 -filter_complex "[0]scale=320:-1,reverse[r];[0][r]concat=n=2:v=1:a=0,fps=10,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif

避免重复第一帧和最后一帧

通过添加修剪设定点过滤器。本例中input.mp4帧速率为 10,时长为 3 秒。请注意,在修剪过滤器中,帧 #0 是第一帧。

ffmpeg -i input.mp4 -filter_complex "[0]trim=start_frame=1:end_frame=29,setpts=PTS-STARTPTS,reverse[r];[0][r]concat=n=2:v=1:a=0,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif

另请参阅使用 ffmpeg 获取帧数

相关内容