使用 ffmpeg 提取所有帧时间戳

Ghi*_*ADJ 4 ffmpeg

Q1. 我应该使用哪个ffmpeg命令来提取与其时间戳相关的每个帧号(从视频开始的时间以毫秒为单位)?

预期结果 :

frame, ts
1, 34
2, 67
3, 101
4, 123
...
Run Code Online (Sandbox Code Playgroud)

Q2。这些时间戳可以安全地用作指向帧的密钥吗?

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


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

Gya*_*yan 9

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
Run Code Online (Sandbox Code Playgroud)

所呈现的帧n在线的位置n(从 1 开始)。

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

A2。应该。其他软件可能会删除起始偏移量 - ffprobe 不会。其他软件可能会考虑音频延迟或编辑列表等来调整计时。