提取所有帧时间戳

问题描述 投票:0回答:1

我的目标是提取视频的每个帧时间戳(可以是 mkv、mp4、avi 等)。 我在 python 中解析结果,所以我可以将帧 1 映射到 42 毫秒,帧 2 映射到 83 毫秒,等等...

我尝试过这两个命令:

ffprobe -select_streams 0 -show_entries packet=pts_time -print_format json VIDEO.mkv
ffprobe -select_streams 0 -show_entries frame=pts_time -print_format json VIDEO.mkv

他们似乎总是返回给我相同的结果,但第一个更快。那么,我应该始终使用

packet=SOMETHING
吗?

有些视频没有

pts_time
。我应该始终使用
dts_time
甚至
best_effort_timestamp_time
而不是
pts_time
吗?

最后,

pts_time
dts_time
best_effort_timestamp_time
的时间似乎总是以秒为单位。有没有办法以毫秒为单位获取它?

timestamp frame ffprobe
1个回答
0
投票

严格来说,帧时序是正确的属性。一个数据包中携带多个帧,或者一个帧被分割(作为切片)跨多个数据包是可能的,但不常见。但大多数时候,你可以使用数据包属性。

*_time
字段均仅打印为十进制秒。您可以读取原始时间戳,即
pts
,但随后您必须与流
time_base
x
1000
相乘才能获得毫秒。

© www.soinside.com 2019 - 2024. All rights reserved.