h.264字节流解析

ste*_*emm 4 c c++ video video-streaming h.264

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

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

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

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

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

谢谢

ana*_*lyg 15

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

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


Grz*_*ski 6

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