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

如何用FFmpeg一键生成视频不同时间点的多张缩略图?

用FFmpeg单命令提取视频多时间点缩略图的方案

嘿,这个需求我经常碰到,用FFmpeg一条命令就能轻松搞定,给你分享几个实用的方法:

1. 指定精确时间点提取

如果已经明确知道要提取的几个时间点(比如第10秒、25秒、40秒),可以用select滤镜直接筛选这些时间点的帧:

ffmpeg -i input.mp4 -vf "select='eq(t,10)+eq(t,25)+eq(t,40)',setpts=N/TB" -vsync vfr -q:v 2 thumb_%02d.jpg

参数解释:

  • eq(t,X):匹配视频中刚好X秒的帧,支持小数(比如eq(t,10.5)表示10.5秒)
  • +:逻辑“或”,表示满足任意一个时间点条件就提取
  • setpts=N/TB:修正输出帧的时间戳,避免出现重复或丢失帧的问题
  • -vsync vfr:启用可变帧率输出,确保每个选中的帧都生成一张独立图片
  • -q:v 2:设置JPG质量(数值越小质量越高,范围1-31,推荐1-5)
  • thumb_%02d.jpg:输出文件名模板,%02d会自动替换为01、02、03这样的序号

2. 处理帧率不恒定的视频

如果视频帧率不稳定,eq(t,X)可能找不到精确匹配的帧,这时候可以改用时间范围匹配,提取X秒附近的第一帧:

ffmpeg -i input.mp4 -vf "select='gte(t,10)*lt(t,10.1)+gte(t,25)*lt(t,25.1)+gte(t,40)*lt(t,40.1)',setpts=N/TB" -vsync vfr -q:v 2 thumb_%02d.jpg

gte(t,X)*lt(t,X+0.1)表示提取X秒到X+0.1秒之间的第一帧,这样能保证一定能拿到对应时间点附近的画面。

3. 同时调整缩略图尺寸

如果需要生成指定大小的缩略图,可以在滤镜链里加上scale:

ffmpeg -i input.mp4 -vf "select='eq(t,10)+eq(t,25)+eq(t,40)',scale=320:-1,setpts=N/TB" -vsync vfr -q:v 2 thumb_%02d.jpg

scale=320:-1表示将宽度固定为320像素,高度按原视频宽高比自动计算,你也可以改成scale=-1:240固定高度。

小提示

  • 如果要提取的时间点非常多,可以把时间点整理成一个表达式,比如eq(t,5)+eq(t,12)+eq(t,18)+...,FFmpeg会自动处理所有条件
  • 如果你更习惯按帧号提取(比如第300帧、第750帧),可以把eq(t,X)换成eq(n,300),其中n是帧的序号(从0开始计数)

内容的提问来源于stack exchange,提问作者Parsa Saei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:38:56