我如何解析 H264 文件和帧

Posted

技术标签:

【中文标题】我如何解析 H264 文件和帧【英文标题】:How can i parse H264 file and frames 【发布时间】:2012-04-12 12:25:36 【问题描述】:

H264 文件是 NAL(网络抽象层)单元的流,每个单元编码一个帧(I、B 或 P)。解析此文件并提取大小并检测文件中每个 NAL 单元的结尾以及检测 NAL 单元包含的帧类型的最佳方法是什么?

【问题讨论】:

如果您的平台是Vista及以上,您可以使用Media Foundation:msdn.microsoft.com/en-us/library/windows/desktop/…SDK中有示例应用 如果你回来了,你能接受另一个答案,所以我可以删除我的 这个问题非常集中,并要求解决一个问题:如何将 h264 文件解析为 NAL 单元流。人们不应关闭位于其知识领域之外的问题。 【参考方案1】:

如果您实际上并未尝试解码帧,则可以通过读取 h.264 字节流并查找 NAL 单元签名来编写一个简单的“解析器”。

以下是您需要了解的内容:

NAL 单位起始码:00 00 01 X Y X = IDR 图片 NAL 单位(例如 25、45、65) Y = 非 IDR 图片 NAL 单元(例如 01、21、41、61)

因此,如果您依次找到 3 个字节 [00 00 01],则很可能它是 NAL 单元的开头。然后您需要解析接下来的两个字节 [X Y] 以找出帧的类型。详情请参考spec。

【讨论】:

规范的链接是 404... 9 年很长,@PeterHansen 仅比您对@GeorgeSkoptsov 问题的最新评论晚了一年半。 ;-)

以上是关于我如何解析 H264 文件和帧的主要内容,如果未能解决你的问题,请参考以下文章

H264解析——切片头检测

H264 视频流的解析

RTP协议全解析(H264码流和PS流)

(原)从mp4,flv文件中解析出h264和aac,送解码器解码失败

GB28181 PS流解析

H264学习