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

使用FFmpeg提取视频关键帧时间戳的参数选择疑问

使用FFmpeg提取视频关键帧时间戳的参数选择疑问

嗨,我来帮你理清这个关于FFmpeg时间戳参数的疑问~

首先得先搞清楚几个核心时间戳参数的区别:

  • PTS(Presentation Time Stamp):帧的显示时间戳,也就是这个帧应该在什么时候呈现给观众的时间点。
  • DTS(Decoding Time Stamp):帧的解码时间戳,指这个帧需要被解码的时间点。对于I帧(关键帧)来说,它不需要依赖其他帧就能解码,所以PTS和DTS通常是一致的,甚至很多时候DTS参数会被省略。

你提供的帧元数据里pkt_dts_time显示为N/A,这完全正常——因为这是一个关键帧,不需要提前解码,所以DTS参数没有被记录。而pts_time和best_effort_timestamp_time值完全相同,这说明FFmpeg已经为你计算出了准确的显示时间戳。

回到你的需求:提取关键帧的时间戳,完全可以用pts_time来替代教程里的pkt_pts_time,甚至best_effort_timestamp_time也可以用,因为在你的场景里这两个值是一致的。

修改后的命令可以写成这样:

ffprobe -i input.mp4 -select_streams v -skip_frame nokey -show_frames -show_entries "frame=pts_time"

如果你想同时确认多个时间戳参数,也可以扩展命令:

ffprobe -i input.mp4 -select_streams v -skip_frame nokey -show_frames -show_entries "frame=pts_time,best_effort_timestamp_time"

从你给出的帧数据来看,这个关键帧的显示时间就是1463.145000秒,用上面的命令就能准确提取到这个值啦。

备注:内容来源于stack exchange,提问作者K G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 07:23:01