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

FFmpeg执行tpad滤镜报错No such filter 'tpad'的问题求助

解决FFmpeg "No such filter 'tpad'" 报错并实现GIF最后一帧加延迟

你的FFmpeg版本是3.4.11,tpad滤镜是从FFmpeg 4.0版本才新增的功能,老版本无法识别这个滤镜,所以出现报错。下面提供两种解决思路:

方案一:升级FFmpeg(推荐)

对于Ubuntu 18.04,可通过第三方PPA升级到支持tpad的版本:

sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt update && sudo apt upgrade ffmpeg

升级完成后,直接运行你原来的命令即可生效:

ffmpeg -i out.gif -vf tpad=stop_mode=clone:stop_duration=2 out2.gif

方案二:不升级,用旧版兼容方法实现

如果不想升级FFmpeg,可直接用以下命令给最后一帧添加2秒延迟:

ffmpeg -i out.gif -vf "select='eq(n,nb_frames-1)?loop=1:1',setpts='eq(n,nb_frames-1)?PTS+2/TB:PTS'" out2.gif

命令说明:

  • select='eq(n,nb_frames-1)?loop=1:1':选中最后一帧时额外循环显示一次,延长该帧的显示时长
  • setpts='eq(n,nb_frames-1)?PTS+2/TB:PTS':给最后一帧的时间戳增加2秒,实现延迟效果

如果上述命令对GIF延迟处理不够准确,可尝试分步操作:

  1. 创建帧存储目录:
mkdir -p frames
  1. 提取原GIF的所有帧和调色板:
ffmpeg -i out.gif -vf palettegen palette.png
ffmpeg -i out.gif -i palette.png -lavfi "paletteuse" -f image2 frames/frame_%04d.png
  1. 获取原GIF的总帧数:
frame_count=$(ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 out.gif)
  1. 复制最后一帧并设置延迟,重新合成GIF:
# 复制最后一帧用于延长显示
cp frames/frame_$(printf "%04d" $frame_count).png frames/frame_$(printf "%04d" $((frame_count+1))).png

# 合成时给最后两帧设置2秒延迟(单位:厘秒)
ffmpeg -framerate 6 -i frames/frame_%04d.png -i palette.png -lavfi "[0:v][1:v]paletteuse" -delay 1x$((frame_count)) -delay 200x$((frame_count+1)) out2.gif

(注:6是原GIF的帧率,需根据实际情况调整)

内容的提问来源于stack exchange,提问作者Zeek Aran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:36:22