H264、Annexb 格式、NALU------解析笔记

一、简介

        H.264的目的是通过先进的编码技术,提供高质量的视频压缩,比以前的标准(如MPEG-2)在相同的画质下占用更少的带宽和存储空间。

        NALU的作用是将H.264编码后的数据组织成可以在不同网络和存储环境中传输和处理的单元。一个H.264视频流由多个NALU组成,每个NALU可以是一个帧的一部分或整个帧。

        Annex B格式提供了一种通过起始码(Start Code)分隔NALU的方法,这种格式通常用于实时传输(如直播)和文件存储(如.mp4或.mkv文件)中。

        因此我认为H264是一种编码方式,NALU是H264视频流的基本单元,Annex B是为了对NALU进一步封装进行传输的方法。

二、Annexb

        Annexb中格式也称为字节流模式,其每一帧起始采用“00 00 00 01”或者“00 00 01”来代表开始,为了防止原始数据中存在这样的数据,该方式对如下数据进行处理:

“00 00 00”修改为“00 00 03 00”  “00 00 01”修改为“00 00 03 01”

“00 00 02”修改为“00 00 03 02”  “00 00 03”修改为“00 00 03 03”

当然在未来解码时候需要把这个03去掉

三、NALU

      

        可以认为NALU是由包头以及数据组成,其中包头是一个字节分别为1位、2位、5位分别代表该数据是否正常、数据重要性、数据类型;

        IDR代表该帧是否位IDR帧

        SEI是视频的附加增强信息,它包含了一些用户自定义的数据,如时间戳,字幕,弹幕等信息。

        SPS指的是序列参数集,它保存了一组编码视频序列的全局参数。编码视频序列指的是原始数据经过编码后组成的一系列序号集。

        PPS是图像参数集,主要用于保存图像序列集中一个或者多个独立的图像。

        如果缺少SPS与PPS数据是无法成功解码的

··································································

        基本编码后的数据位SODB数据,为了数据对齐,在SODB后加入一个1与多个0完成数据对齐的数据叫做RBSP数据,最后为了去除开始加入防止与起始码重复的0x03,将多余的0x03取出后为最终的数据EBSP。

        以下为一些固定的组合 其中00 00 00 01后面的第一个byte是包头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值