繁体   English   中英

h.264字节流解析

[英]h.264 bytestream parsing

输入数据是一个字节数组,表示h.264帧。 该帧由单个切片(不是多切片帧)组成。

所以,据我所知,我可以像切片一样处理这个框架。 切片具有头部和切片数据 - 宏块,每个宏块具有其自己的头部。

所以我必须解析该字节数组以提取帧数,帧类型,量化系数(据我所知,每个宏块都有自己的系数?或者我错了?)

你可以告诉我,我可以在哪里获得有关解析h.264帧字节的更多详细信息。

(事实上​​我已经阅读了标准,但它并不是非常具体,我迷路了。)

谢谢

H.264标准有点难以阅读,所以这里有一些提示。

  • 阅读附件B; 确保您的输入以开始代码开头
  • 阅读第9.1节:您将需要以下所有内容
  • 切片头在7.3.3节中描述
  • “帧号”未在切片标题中明确编码; frame_num接近你可能想要的。
  • “帧类型”可能对应于slice_type (切片头中的第二个值,因此最容易解析;你应该从这个开始)
  • “量化系数” - 你的意思是“量化参数”? 如果是,请准备编写完整的H.264解析器(或重用现有的解析器)。 请参阅第9.3节,了解H.264解析器的复杂性。

标准很难读。 您可以尝试使用它的C(C99)库分析现有H.264视频流解码软件(如ffmpeg)的源代码。 例如, 此处记录 avcodec_decode_video2函数。 您可以在此处获得完整的工作C(打开文件,获取H.264流,迭代帧,转储信息,获取色彩空间,将帧保存为原始PPM图像等)。 另外,还有很棒的“H.264高级视频压缩标准”一书,该书解释了“人类语言”中的标准。 另一个选择是尝试Elecard StreamEye Pro软件(有试用版),它可以为您提供一些额外的(视觉)视角。

实际上阅读H.264视频编码文档要好得多,也更容易(仅限我的意见)。 ffmpeg是非常好的库,但它包含很多优化的代码。 最好看一下H.264编解码器和官方文档的参考实现。 http://iphome.hhi.de/suehring/tml/download/ - 这是JM编解码器实现的链接。 尝试分离解码过程的级别,例如包含NAL单元的传输层(SPS,PPS,SEI,IDR,SLICE等)。 比你需要实现VLC引擎(主要是0范围的exp-Golomb代码)。 比非常困难和强大的编解码器称为CABAC(Context Adaptive Arithmetic Binary Codec)。 这是一项非常棘手的任务。 解复用过程(在解压缩视频数据之后)也很复杂。 您需要完全理解每个模块。 祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM