有没有办法使用 ffprobe 或类似的命令行工具来探测每个 GOP 的视频比特率?
ffprobe 似乎只输出整个视频的总比特率,而不是数据包。
ffprobe -i video.mp4 -show_entries packets
我猜这是一组图片。
[PACKET]
codec_type=video
stream_index=0
pts=126976
pts_time=9.920000
dts=126464
dts_time=9.880000
duration=512
duration_time=0.040000
convergence_duration=N/A
convergence_duration_time=N/A
size=6229
pos=5648590
flags=__
[/PACKET]
答案1
数据包不是一组图片——根据容器的不同,数据包只是一帧或者也可以只包含帧的一部分。
您应该查看是否有包含关键帧的数据包。检查属性flags
。如果其中有K
,则这是 GOP 的开始。记住数据包 DTS 并计算size
属性总和,直到到达下一个关键帧,将该总和除以时间戳中的增量,或者除以 的总和duration_time
。
这将为您提供每个 GOP 的比特率,包括分组开销。