如何解析H264文件和帧?

7

H264文件是由一系列NAL(网络抽象层)单元组成的流,每个NAL单元编码一个帧(I、B或P)。如何最好地解析此文件并提取每个NAL单元的大小和检测文件中每个NAL单元的结束,以及检测NAL单元包含的帧类型?


如果你的平台是 Vista 或以上版本,你可以使用 Media Foundation:http://msdn.microsoft.com/en-us/library/windows/desktop/dd797815%28v=vs.85%29.aspx 在 SDK 中有示例应用程序。 - EdChum
如果你回来了,能不能接受另一个答案,这样我就可以删除我的答案。 - EdChum
这个问题非常专注,只是在寻求一个单一问题的解决方案:如何将h264文件解析为NAL单元流。人们不应该关闭超出他们知识领域的问题。 - George Skoptsov
1个回答

23

如果您不是真正尝试解码帧,那么您可以通过读取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]以找出帧的类型。有关详细信息,请参阅规范


规范的链接是404错误... - Peter Hansen
2
9年是很长的时间,@PeterHansen - George Skoptsov
仅比你在问题@GeorgeSkoptsov上的最新评论晚了一年半。;-) - Peter Hansen
1
损坏的链接可以在https://web.archive.org/web/20170403144107/http://www-ee.uta.edu/dip/courses/ee5356/H264systems.pdf上找回。 - Carvo Loco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接