分享

h264流、帧结构

 wyongz 2012-01-12

 H264码流结构
1. H264分层结构
H.263定义的码流结构是分级结构,共四层。自上而下分别为:图像层(picturelayer)、块组层(GOB layer)、宏块层(macroblock layer)和块层(block layer)。而与H.263相比,H.264的码流结构和H.263的有很大的区别,它采用的不再是严格的分级结构。
H.264的功能分为两层,视频编码层(VCL)和网络提取层(NALVCL数据即被压缩编码后的视频数据序列。在VCL数据要封装到NAL单元中之后,才可以用来传输或存储。
NAL单元格式[2] 表1所示:
表1 NAL单元格式
    NAL头
RBSP
NAL头
RBSP
RBSP:封装于网络抽象单元的数据称之为原始字节序列载荷RBSP,它是NAL的基本传输单元。其中,RBSP又分为视频编码数据和控制数据。其基本结构是:在原始编码数据的后面填加了结尾比特。一个bit“1”若干比特“0”,以便字节对齐。
2. H.264码流结构图
通过相关知识的查阅,概括出H.264的码流结构图[2]如图1所示:
H.264码流结构的分析

图1 H.264的码流结构

 
3 H.264码流分析的应用
在有些时候,需要从H.264码流中直接取得相关信息(如:图像的宽度和图像的高度等等信息)。下面介绍下取得相关信息的方法:
图像的相关信息存储在网络提取层(NAL)的RBSP结 构中,要取得图像的相关信息,既要获得图像的相关位。需依据RBSP结构,获得pic_width_in_mbs_minus1和 pic_height_in_map_units_minus1两个值,那么宽度为(pic_width_in_mbs_minus1+1)*16,高度 为(pic_height_in_map_units_minus1+1)*16,但是有些情况还得考虑nNum_Ref_Frames的值,一般为1。
3.1获得试验数据
设备:SUNNIC IP Cam
名字:ST100factory
Firmware版本:p8b8
视频格式:H.264
(1) 将设备分辨率设成176*144,使用Ethereal等抓包工具抓得一组数据,并去掉相应的RTP头后,该数据为0x00,0x00,0x00,0x01,0x67,0x42,0x00,0x1E,0x99,0xA0,0xB1,0x31
(2) 将设备分辨率设成720*240,使用Ethereal等抓包工具抓得一组数据,并去掉相应的RTP头后,该数据为0x00,0x00,0x00,0x01,0x67,0x42,0xE0,0x1E,0xDA,0x82,0xD1,0xF1
(3) 将设备分辨率设成720*480,使用Ethereal等抓包工具抓得一组数据,并去掉相应的RTP头后,该数据为0x00,0x00,0x00,0x01,0x67,0x42,0xE0,0x1E,0xDB,0x82,0xD1,0xF1

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多