我需要获取x264编码电影中特定帧号的帧类型(I/B/P)。
请问如何使用ffmpeg/ffprobe实现此功能?也欢迎提供其他解决方案。
ffprobe
和grep
的方法来完成它:$ 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
ffprobe video.mp4 -show_frames | findstr "pict_type"
。 - Roovyffmpeg -i input.mp4 -vf select='eq(n,334)',showinfo -f null -
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]
ffmpeg -i input.mkv -vf "select=eq(n\,100),showinfo -f null - 2>&1 | grep type: | awk '{split($16,a,":"); print a[2]}'
- Damnesia
ffplay video.mp4 -vf showinfo
,这会将所有图片类型打印到屏幕上。之前的命令只对hevc有效,原因不明。 - Dimitri Podborski