使用 ffmpeg 提取所有帧的时间戳

使用 ffmpeg 提取所有帧的时间戳

问 1.我应该使用哪个ffmpeg命令来提取与其时间戳(从视频开始算起的毫秒时间)相关联的每个帧号?

预期结果 :

frame, ts
1, 34
2, 67
3, 101
4, 123
...

问2.这些时间戳是否可以安全地用作指向框架的密钥?

换句话说,如果我使用其他工具ffmpeg来做同样的事情,我是否会得到完全相同的时间戳。


材料:http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

答案1

A1。您可以通过运行

ffprobe video.mp4 -select_streams v -show_entries frame=coded_picture_number,pkt_pts_time -of csv=p=0:nk=1 -v 0

输出为

0.000000,0
0.040000,3
0.080000,2
0.120000,4
0.160000,1
0.200000,7
0.240000,6
0.280000,8
0.320000,5

所呈现的帧n位于线上n(从 1 开始)。

第一列是时间戳,单位为秒;第二列是帧的编码解码和文件存储顺序。

A2。应该是。其他软件可能会删除起始偏移量 - ffprobe 不会。其他软件可能会根据音频延迟或编辑列表调整时间……等等。

相关内容