如何用FFmpeg为截取的GIF添加从零开始的秒数计数器
解决FFmpeg生成GIF时添加从零开始的秒数计数器问题
你需要利用FFmpeg的drawtext滤镜计算相对时间——用当前帧的时间戳减去截取片段的起始时间,就能得到从零开始的秒数。
修改后的完整命令如下:
ffmpeg -i in.mp4 -vf "scale=300:-1,fps=5,drawtext=text='%{eif:t-43:1}':fontsize=24:fontcolor=white:x=10:y=10,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -ss 43 -t 33 out.gif
关键参数说明:
text='%{eif:t-43:1}':t代表当前帧的原始视频时间戳43是你通过-ss指定的截取起始秒数,两者相减得到片段内的相对时间eif是格式化指令,1表示输出整数;如果需要保留小数(比如一位小数),可以改成%{eif:t-43:1:.1f}
fontsize=24:fontcolor=white:x=10:y=10是计数器的样式与位置参数,你可以根据需求调整字体、大小、颜色和坐标。
注意事项:
- 要把
drawtext滤镜放在fps之后、split之前,保证计数器跟随降帧后的帧率更新 - 如果你的起始时间是小数(比如
-ss 43.5),直接把命令里的43替换成对应的数值即可
内容的提问来源于stack exchange,提问作者virtualdj
相关产品推荐
相关产品推荐

