我有一个输入视频 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
Run Code Online (Sandbox Code Playgroud)
llo*_*gan 12
ffmpeg -i input.mp4 -filter_complex "[0]reverse[r];[0][r]concat=n=2:v=1:a=0" output.gif
Run Code Online (Sandbox Code Playgroud)
默认情况下, GIFffmpeg将永远循环,因此您无需添加任何循环选项。
使用reverse、concat、split、palettegen和paletteuse过滤器:
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
Run Code Online (Sandbox Code Playgroud)
改编自如何使用 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
Run Code Online (Sandbox Code Playgroud)
通过添加修剪和设置过滤器。在此示例中,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
Run Code Online (Sandbox Code Playgroud)
另请参阅使用 ffmpeg 获取帧计数。