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

FFmpeg添加GIF水印:循环播放失效问题解决求助

解决FFmpeg中GIF水印仅播放一次的问题

这个问题很常见——当你的GIF时长比目标视频短的时候,FFmpeg默认只会播放一遍GIF的帧序列,之后水印就停留在最后一帧,看起来像是"停止了"。下面给你两种简单有效的解决方案:

方法1:用-stream_loop参数让GIF无限循环

在GIF的输入参数前添加-stream_loop -1,这个参数会让GIF的视频流无限重复播放,直到视频结束。修改后的完整命令如下:

ffmpeg.exe -i "video.mp4" -stream_loop -1 -i "ani.gif" -filter_complex "[1:v]format=yuva444p,setsar=1,scale=80:80,rotate=PI/6:c=black@0:ow=rotw(PI/6):oh=roth(PI/6) [rotate];[0:v][rotate] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy -y output.mp4

说明:-stream_loop -1中的-1代表无限循环,你也可以换成具体数字(比如3就是循环3次),但一般做水印用无限循环更合适。

方法2:用loop滤镜在处理链中实现循环

如果你更倾向于在滤镜链里控制循环,可以给GIF的视频流添加loop滤镜,设置无限循环。修改后的命令:

ffmpeg.exe -i "video.mp4" -i "ani.gif" -filter_complex "[1:v]loop=loop=-1:size=0,format=yuva444p,setsar=1,scale=80:80,rotate=PI/6:c=black@0:ow=rotw(PI/6):oh=roth(PI/6) [rotate];[0:v][rotate] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy -y output.mp4

说明:loop=loop=-1表示无限循环,size=0表示使用输入GIF的所有帧来循环,这样GIF会持续重复播放直到视频结束。

额外注意事项

  • 保留format=yuva444p确保GIF的透明通道正常生效,避免水印出现黑边或背景色;
  • setsar=1是为了保证缩放、旋转后的水印不会出现拉伸变形;
  • 你的旋转参数rotate=PI/6:c=black@0...设置没问题,保持即可,c=black@0确保旋转后的空白区域完全透明。

内容的提问来源于stack exchange,提问作者Muhammad Sanaullah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:40