You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

FFmpeg固定间隔截图:如何让文件名包含时间戳/秒数?

用FFmpeg生成带时间信息的截图文件名

我来帮你搞定这个FFmpeg截图文件名的问题!你想要把原本的序列编号改成对应时间的文件名,分两种场景给你具体的解决方案:

一、秒数格式(0.jpg、5.jpg、10.jpg...)

你提到的-frame_pts选项刚好能派上用场,它会把帧的PTS(显示时间戳)作为文件名。结合你每5秒抽1帧的需求,只需要在原命令里加上-frame_pts 1,同时确保视频同步模式为可变帧率(避免PTS被重写),命令如下:

ffmpeg -i source -r 1/5 -vsync vfr -frame_pts 1 %d.jpg

关键参数解释:

  • -vsync vfr:强制使用可变帧率,让FFmpeg保留原始帧的时间戳,不会重新生成连续的PTS
  • -frame_pts 1:启用用PTS作为文件名的功能,这样每5秒抽取的帧对应的PTS就是0、5、10...,正好对应你想要的秒数文件名

二、时间戳格式(00:00:00.0000.jpg、00:00:05.0000.jpg...)

这种格式需要用到FFmpeg的strftime功能,它支持按自定义时间格式生成文件名。命令如下:

ffmpeg -i source -r 1/5 -vsync vfr -f image2 -strftime 1 "%H:%M:%S.%4N.jpg"

注意事项:

  • 如果是Windows系统,文件名里不能用冒号:,可以换成横杠-适配系统规则,命令改成:
    ffmpeg -i source -r 1/5 -vsync vfr -f image2 -strftime 1 "%H-%M-%S.%4N.jpg"
    
  • 格式字符串说明:
    • %H:%M:%S:生成「小时:分钟:秒」的标准时间格式
    • %4N:生成4位毫秒数(如果需要更少位数,可改成%3N对应3位、%2N对应2位)

额外小提示

如果你担心原视频的时间戳有偏移,可以加上-copyts参数,强制FFmpeg复制原始视频的时间戳,避免时间计算错误:

# 秒数格式加-copyts
ffmpeg -i source -copyts -r 1/5 -vsync vfr -frame_pts 1 %d.jpg

# 时间戳格式加-copyts
ffmpeg -i source -copyts -r 1/5 -vsync vfr -f image2 -strftime 1 "%H:%M:%S.%4N.jpg"

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

火山引擎 最新活动