H264基础介绍

H264 基础介绍

图像序列

序列结构: 00 00 00 01 + SEI + SPS + PPS + IDR帧+P帧+B帧…+ I帧+P帧+B帧…

  • H264的目标
    1.高的视频压缩比
    2.良好的网络传输行
  • H264的解决方案:
  1. VCL 视频编码层: 对核心算法引擎,块,宏块及其片的定义,输出编码数据为SODB
  2. NAL 网络提取层: 包含片级以上的定义(SPS, PPS, SEI)等,独立片编码,并且将SODB打包为RBSP然后加上NAL header 组成 NALU(NAL单元)

H264传输结构

  • H264在网络中传输的为NALU, NALU结构是由 NAL header + RBSP 组成

  • NAL header组成

    • 起始码(3 - 4 bit)::每个NALU之间通过startcode(起始码)进行分隔,起始码分成两种: 0x000001(3Byte)或者0x00000001(4Byte)。
      如果NALU对应的Slice为一帧的开始就用0x00000001,否则就用0x000001。
    • header(1 bit) 1+2+5
      • forbidden_bit (1)
      • nal_referrence (2)
      • nal_unit_type (5)

NALU 分类

  • 由nal_unit_type决定
    • 带VCL的NAL
      • 头文件
      • 帧内编码块
      • 帧间编码块
    • 不带VCL的NAL
      • SPS(序列参数集): 针对一连续编码视频序列的参数, 如 标识符, 帧数及参考帧数据,解码图像尺寸和帧场编码模式选择。
      • PPS(图像参数表):对熵编码类型和参数图像的数目和初始化识别, 例如 一个序列中某一幅图像或者几幅图像
      • SEVL:

H264名词解析

  • 序列:
    • 现场和帧:视频的 一场和帧可用来产生一个编码图像,
    • 片(slice): 每个图像中,若干个 宏块 被排练 成片的形式,片分为I片,B片,P片 和其他一些片。
      • 特定:
        • 片的目的:防止误码的扩散和传输,使得编码片相互间是独立的
        • I 片只包含 I 宏块,P片包含P 和 I 宏块, 而B 片可包含B和I 宏块
        • I宏块利用从当前片中已解码的像素作为参考进行帧内预测
        • P宏块利用前面已编码图象作为参考图象进行帧内预测
        • B宏块则利用双向的参考图象(前一帧和后一帧)进行帧内预测
      • 宏块:一个编码图像通常划分成若干个宏块组成, 一个宏块由一个16×16亮度像素和附加的一个8×8 Cb和一个8×8 Cr彩色像素块组成。
    • 帧类型(I.P,B), IDR(关键帧)
      + I帧:序列中完整的图像帧
      + P帧: 参考之前的I帧组成的
      + B帧:参考前后图像帧编码生成的
    • 画面组(GOP):图像编码不大的图像集,
      • 组成: 含有M , N二个数字
        • M: I帧和P帧的距离
        • N:2个I帧之间的距离
    • 参数集

H264数据格式

  • SODB 数据比特串 ---->最原始的编码数据,即VCL数据;
  • RBSP  原始字节序列载荷 ---->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐;
  • EBSP  扩展字节序列载荷 ---- > 在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要添加每组NALU之前的开始码StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,否则用3位字节表示ox000001(是一帧的一部分)。另外,为了使NALU主体中不包括与开始码相冲突的,在编码时,每遇到两个字节连续为0,就插入一个字节的0x03。解码时将0x03去掉。也称为脱壳操作。

H264数据关系

一个视频 图像编码后的数据叫做一帧, 一帧由一个片(slice)或者多个片组成,一个片由一个或者多个宏块(MB) 组成,一个宏块由16 * 16 的yuv数据组成, 宏块为H264编码的基本单位。

整合了许多网友对H264文件解析,有错误即可评论指正

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值