使用ffmpeg获取特定帧的帧类型

时间:2016-05-31 20:05:51

标签: ffmpeg x264 ffprobe

我需要获取x264编码影片的特定帧编号的帧类型(I / B / P)。

如何使用ffmpeg / ffprobe执行此操作? 我也对其他解决方案持开放态度。

2 个答案:

答案 0 :(得分:3)

我找到了使用ffprobegrep

的方式
$ ffprobe video.mp4 -show_frames | grep -E 'pict_type|coded_picture_number'

这会产生如下输出:

pict_type=I
coded_picture_number=0
pict_type=B
coded_picture_number=3
pict_type=B
coded_picture_number=2
pict_type=P
coded_picture_number=1
pict_type=B
coded_picture_number=6
...

要获取特定帧(例如第8帧)的帧类型,您可以将其扩展为:

$ ffprobe video.mp4 -show_frames | grep -w -E 'coded_picture_number=8' -B 1

pict_type=P
coded_picture_number=8

答案 1 :(得分:2)

您可以直接使用ffmpeg

@num_of_years

以上将为视频的第335帧产生输出

ffmpeg -i input.mp4 -vf select='eq(n,334)',showinfo -f null -

你可以跳过选择过滤器并获得所有帧的输出,然后grep像@incBrain那样。请注意,您需要n: 0 pts: 171008 pts_time:11.1333 pos: 1090471 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:B checksum:A72D197D plane_checksum:[9008E835 680AC49A 6CD66C90] mean:[136 122 134] stdev:[65.4 7.0 9.5] ,而不是已编码。