我可以使用ffmpeg或ffprobe获取h.264每一帧的引用列表吗?

Posted

技术标签:

【中文标题】我可以使用ffmpeg或ffprobe获取h.264每一帧的引用列表吗?【英文标题】:Can I get the referencing list of each frame of h.264 using ffmpeg or ffprobe? 【发布时间】:2021-11-30 20:01:46 【问题描述】:

我想获取 h.264 视频每一帧的引用列表。例如,我想得到如下列表:

第 0 帧:参考第 0 帧

第 1 帧:参考帧 0

第 2 帧:参考帧 1,3

第 3 帧:参考帧 0

我可以使用 ffmpeg 或 ffprobe 获得上面的引用信息吗?我用谷歌搜索但收成很少。或者有没有什么软件可以做到这一点?感谢您的回复!

【问题讨论】:

【参考方案1】:

List 0 和 List 1 引用的直接打印被预处理器保护隐藏。但是,您可以通过打印解码器的 mem mgmt 操作来接近

ffmpeg -debug mmco -i INPUT -an -f null -

这将以以下格式打印读数。

[h264 @ 000001c7cf382340] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 0
[h264 @ 000001c7cf382340] short term list:
[h264 @ 000001c7cf382340] 0 fn:7 poc:65552 000001c7d1090d80
[h264 @ 000001c7cf382340] 1 fn:6 poc:65556 000001c7d0da4600
[h264 @ 000001c7cf382340] 2 fn:5 poc:65548 000001c7d0b00500
[h264 @ 000001c7cf382340] long term list:

fn 指的是解码顺序中的帧索引。 poc 是显示顺序(基本偏移量为 65536)。

【讨论】:

非常感谢!但是我仍然不知道如何使用解码顺序和显示顺序获取参考列表。例如显示顺序为0,1,2,解码顺序为0,1,2。那么有两个2的可能性。一个是第 1 帧参考第 0 帧,第 2 帧也参考第 0 帧;或 frame-1 参考 frame-0 和 frame-2 参考 frame-1。所以我认为仅使用解码顺序和显示顺序可能很难得到每一帧的参考列表。感谢您的回复! 抱歉,*** 说我“需要至少 15 个声望才能投票”,所以我不能使用竖起大拇指按钮!

以上是关于我可以使用ffmpeg或ffprobe获取h.264每一帧的引用列表吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用FFmpeg获取视频每一帧的信息

FFMPEG - 获取创建和/或修改日期

FFmpeg三件套之FFprobe使用介绍

无法使用 ffmpeg 从 Smooth Streaming Manifest 文件获取信息

ffprobe 或 avprobe 在 JSON 输出中返回纯文本错误

每秒获取比特数 FFmpeg/Mediainfo