归纳总结一下帧frame 片slise nalu 宏块 场 这些概念之间的关系和部分细节的理解

16 篇文章 0 订阅

NAL、Slice与frame意思及相互关系

NAL指网络提取层,里面放一些与网络相关的信息 

Slice是片的意思,264中把图像分成一帧(frame)或两场(field)(所谓的场,来源于老式的那种隔行扫描电视的概念,奇数行算一场,偶数的算另一场,由于数据传输的问题,所以分为两场来传输新型号,这样由于人眼有信息暂留,所以不影响最后的效果),而帧又可以分成一个或几个片(Slilce);片由宏块(MB)组成。宏块是编码处理的基本单元。


从容纳数据角度来说,NAL单元除了容纳Slice编码的码流外,还可以容纳其他数据,比如序列参数集SPS。

从数据层次角度来说,一幅原始的图片可以算作广义上的一帧,帧包含片组和片,片组由片组成,片由宏块组成,每个宏块可以是4*4、8*8、16*16像素规模的大小

从编码优化角度来说,帧和片可分为i、p、b,i是起始,是基准,p是参考前一个单位得到,b是参考前和后单位得到


1 frame的数据可以分为多个slice. 多个slice可以合称为一个slice组
每个slice中的数据,在帧内预测只用到自己slice的数据, 与其他slice 数据没有依赖关系。 
NAL 是用来将编码的数据进行打包的。 比如,每一个slice 数据可以放在NAL 包中。 


I frame 是自己独立编码,不依赖于其他frame 数据。 
P frame 依赖 I frame 数据。 
B frame 依赖 I frame, P frame 或其他 B frame 数据。


slice中的i p b和上面类似

I_slice、P_slice、B_slice 表示I类型的片、P类型的片,B类型的片.其中I_slice为帧内预测模式编码;P_slice为单向预测编码或帧内模式;B_slice 中为双向预测或帧内模式。


NAL nal_unit_type 为序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)不属于啥帧的概念。表示后面的数据信息为序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)。


NAL nal_unit_type中的1(非IDR图像的编码条带)、2(编码条带数据分割块A)、3(编码条带数据分割块B)、4(编码条带数据分割块C)、5(IDR图像的编码条带)五种类型,代表接下来数据是表示啥信息的和具体如何分块。


发现个好工具,h264videoes,可以把我自己编码的264解析出来,看看里面都有哪些东西,因为我是逐帧编码264,所以idr帧较多,影响了264文件的大小,这个可以从考虑编码频率上解决


nalu可以分为两种格式,字节流和rtp格式,字节流格式主要用于文件存储,因此在该格式码流中 NALU 前面只有一个开始前缀(这个可以是0x00 00 01 也可以是 0x 00 00 00 01.区别只在于如果是i帧被编为多个slice,那么这个i帧的开头就是0x 00 00 01,其他都是后者),RTP格式码流因为需要进行网络传输, 因此 NALU 前面还有很多辅助信息

字节流=开始前缀+NALU,而 RTP 中没有 开始前缀


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值