ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从视频到01(码流的组成)

2022-02-05 10:31:53  阅读:274  来源: 互联网

标签:码流 视频 01 编码 SS SPS PPS slice GOP


1. 编码的分层编码结构

视频->GOP->slice->SS(slice segment)->CTU->CU

1.1 GOP

图像组,由slice组成
GOP结构分为开放式GOP和封闭式GOP。
封闭式GOP中,每个GOP的第一帧是IDR帧,并且每个GOP独立编解码。
开放式GOP只有第一个GOP的第一帧为IDR帧,而后续GOP的第一帧为non-IDR帧,于是后一GOP可以参考前一GOP中的帧。
GOP分类

1.2 slice

slice为了并行处理,一帧图像可以是一个slice,也可以是多个slice。
不同slice之间独立编解码,所以可以多个slice并行编解码,提高编码效率。

1.3 Slice segment

每个slice又可以划分为多个SS,SS有依赖SS,编码需要参考其他SS信息,也有独立SS,编码可以独立完成。

2.码流结构

2.1 SPS、PPS、VPS

将属于GOP层和slice层中公用的的语法元素独立出来编码,避免在低层语法上重复编码。分别组成序列参数集(SPS, Sequence Parameters Set)和图像参数集(PPS, Picture Parameters Set)。

  1. SPS包含一个CVS(Coded Video Sequence)中所有图像的共用信息。
    Note:CVS是一个GOP编码生成的压缩数据。所以应该是每一个GOP公用一个SPS。
    SPS中内容大致包括:解码相关信息,档次级别、分辨率、档次中编码工具开关以及涉及的参数、时域可分级信息等,
  2. PPS包含一幅图像所用的公共参数,也就是一幅图像中所有的SS引用同一个PPS。
    内容包括初始图像控制信息,包括:量化参数、分块信息等。
    Note:也就是说,当多个slice并行编解码时,是公用一个PPS的。
  3. VPS(Video Parameter Set, VPS)是为了兼容标准在其他应用上的扩展,当扩展了新的应用时,原语法结构不需要发生改变,添加新的语法结构来应对。内容大致包含多个子层共享的语法元素,但是不属于SPS中的信息。

所以,当SS想获得一些公用信息时,需要先引用自己的PPS,再通过PPS引用的SPS,进而再获得SPS引用的VPS。这样层层递进的获得自己的所有控制和参数信息。

2.2 码流参数引用结构图

参数引用结构

2.3 一对多的关系

为了节省码流,参数集不会传输很多次,当然也可以设定每次都传输。
也就是,参数集是一对多的关系,可以很多个GOP引用同一个SPS,同理,可以很多个SS引用同一个PPS。也就是多个图像的控制参数没有发生太大变化,那么只传输一个PPS,后续图像都引用他即可。所以实际编码时,有SPS_ID和PPS_ID,每个PPS有自己ID以及自己参考的SPS的ID,这样的话,只要传输一部分即可,不需要每次都传输。

2.4 VCLU和non-VCLU

NAL单元根据是否装载视频编码数据被分为VCLU(Video Coding Layer Unit)和non-VCLU。
非编码数据的参数集作为non-VCLU进行传输,参数集的独立可以使其提前发送,也可以在需要增加新的参数集的时候再发送。
这样的好处就是和非编码数据分离开来,因为他比较重要,所以可以重发,可以额外发送作为补充,以及增加多重保护机制发送。
SS是视频编码数据的基本单位,一个SS的压缩数据生成一个VCLU进行传输。
最终,一个视频序列的编码码流由一系列SS生成的多个VCLU单元和在VCLU之间的一些分割标示数据,以及参数集数据组成。
分割标示数据和参数集数据是non-VCLU,分割标示数据用于区分SS属于哪副图像,哪个CVS。

3. 编码系统的分层结构

AVC和HEVC,都是采用视频编码层(Video Coding Layer, VCL)和网络适配层(Network Abstract Layer, NAL)双层架构,目的是:适应不同的网络环境和视频应用。
网络适配层:对视频压缩后的数据进行划分和封装,并进行必要的标示。视频压缩后的数据中,有一些参数数据非常重要,有一些作为参考帧的编码数据也非常重要,在面对复杂的网络环境时,我们要优先保证这些数据的安全。所以,需要网络适配层对编码后的数据根据重要性进行划分和封装,并标示出数据的重要性。

3.1 分层结构

不同类型的网络还是有比较大的区别,将整个编码系统分层的话,就可以在视频编码层,只关注视频数据的压缩效率,而在网络适配层去针对网络环境进行调整。
例如:不同网络支持的最大传输单元(Maximum Transmission Unit, MTU)是不同的,有线网络会比无线网络大很多。网络的分组策略要根据视频数据的内容特性来决定,不同网络有自己的分组策略。不同的场景下,应用的传输协议不同,时延要求低注重视频数据完整性和正确性的应用,采用可靠的传输协议–TCP/IP;视频会议等实时要求高的应用,采用不可靠的传输协议(RTP/UDP/IP)。
适应不同的网络环境和应用需要,NAL将视频压缩数据根据内容特性,分类成具有不同特性的NAL单元(NAL Unit,NALU),并对NALU的内容特性进行标识。从而使得在网络上传播中,网络只需要根据NALU标识就可以优化传输性能,不需要自行分析。
编码系统分层结构

3.2 变化过程

原始视频序列:
数据组成:序列->帧->像素
经过视频编码层(VCL):
数据组成:参数集+编码数据->控制信息+残差数据
经过网络适配层(NAL):
数据组成:NALU+non-NALU

其中,NAL根据压缩视频数据比特流的内容特性,将其划分成多个数据段,对每个数据段进行封装并对其中的内容特性进行标识,生成NALU,内容特性信息放在NALU头信息中。

标签:码流,视频,01,编码,SS,SPS,PPS,slice,GOP
来源: https://blog.csdn.net/DuoKingg/article/details/122785788

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有