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

如何使用ffmpeg根据给定时间戳获取视频中最接近的帧序号

使用FFmpeg获取可变帧率视频指定时间最近帧序号方法

前置要求

已安装FFmpeg全套工具包(默认包含ffprobe组件,无需额外安装)

核心命令

替换命令中的<目标时间>(支持HH:MM:SS格式)和<视频路径>即可直接运行:

ffprobe -v error -skip_frame nokey -select_streams v:0 -show_entries frame=coded_picture_number -read_intervals <目标时间>%+#1 <视频路径>

参数说明

  • -skip_frame nokey:仅处理关键帧,跳过所有非关键帧大幅提升处理速度,关键帧间隔通常为2-10秒,刚好匹配允许数秒误差的要求
  • -read_intervals <目标时间>%+#1:直接跳转至目标时间附近,仅读取1帧就停止处理,无需扫描全量视频文件
  • -show_entries frame=coded_picture_number:仅输出帧序号字段,不会返回其他冗余元数据
  • -select_streams v:0:仅处理第一条视频流,忽略音频、字幕等其他流内容

结果提取

命令返回结果格式如下,直接提取=后的数字即为所求的帧序号:

[FRAME]
coded_picture_number=XXX
[/FRAME]

可选调整

如果对精度要求更高,可删除-skip_frame nokey参数,误差可缩小至1帧以内,仅会损失少量处理速度

示例验证

输入:

  • video.mp4(示例假定为30fps恒定帧率)
  • 目标时间 00:00:05
    执行命令后提取得到的帧号为150,与预期结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:03