如何使用ffmpeg或ffprobe获取H.264视频每帧的参考帧列表?
H.264视频参考帧列表获取方法
用ffmpeg/ffprobe实现的方案
ffmpeg/ffprobe本身支持输出解码器调试信息,可以直接提取到每帧对应的参考帧列表,不需要额外开发:
- 执行以下命令即可同时输出帧序号、帧类型和对应参考帧列表:
ffprobe -v trace -show_entries frame=key_frame,pkt_pts,pict_type -of csv 你的视频文件路径 2>&1 | grep -E '(List of reference frames|frame,'
- 输出结果中,
frame,开头的行按顺序对应每帧的基础信息,紧接其后的List of reference frames开头的行就是当前帧的参考帧编号,逐行对应整理后就能得到你需要的格式:帧0:参考帧0
帧1:参考帧0
帧2:参考帧1、3
帧3:参考帧0
如果是Windows系统没有grep工具,可以把命令中2>&1 | grep -E '(List of reference frames|frame,'部分去掉,直接把所有输出导出到文本文件后手动筛选相关行即可
其他可实现该需求的工具
- Elecard StreamEye:专业的视频码流分析工具,支持可视化查看H.264每帧的参考关系,也支持批量导出所有帧的参考帧列表,适合需要同时分析码流其他参数的场景。
- 开源h264bitstream库:可以解析裸H.264码流的所有头部字段,自行编写简单脚本提取slice头部的参考帧列表字段,即可自定义输出格式。
内容的提问来源于stack exchange,提问作者Reasno
相关产品推荐
相关产品推荐

