首先根据参考软件中的cfg可知,我以VTM6.0为例共有4个配置文件,3个编码结构。
encoder_intra_vtm.cfg是全帧内编码结构:只包含I帧。IntraPeriod=1
encoder_lowdelay_P_vtm.cfg和encoder_lowdelay_vtm.cfg是低延迟编码。只有第一帧是I帧,后面全是B帧或者P帧。IntraPeriod=-1
encoder_randomaccess_vtm.cfg是随机接入编码结构,包含I帧和B帧。IntraPeriod=32
全帧内编码结构(AI)
在全帧内(All Intra)编码结构中,每一帧都是进行帧内预测,不需要参考其他帧来进行编解码。
及时解码刷新(Instantaneous Decoding Refresh, IDR)帧和I帧的区别:
1、所有的 IDR 帧都是 I 帧,但并不是所有 I 帧都是 IDR 帧。就是说, IDR 帧是 I 帧的子集。
2、引入 IDR 帧是为了解码的重同步,当解码器解码到 IDR 帧时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR帧之后的图像永远不会使用IDR之前的图像的数据来解码。
3、普通I帧有被跨帧参考的可能,但IDR不会。
由于AI编码结构下,每帧的编解码都是相互独立的,且图片的播放顺序(POC)和编码顺序(EOC)一致。因此AI编码结构适合信道环境较差,容易发生丢包现象的编码场景,当发生丢包时不会影响后续帧的编解码。
低延迟编码结构(LP)
只有第一帧图像按照帧内方式进行编码,并成为IDR帧,随后的各帧都作为普通P和B帧(Generalized P and B picture, GPB )进行编码。根据后续帧的类型是B帧还是P帧,将低延迟编码结构进一步分为LDB和LDP两种编码结构。P帧仅有一个参考列表,而B帧有两个参考列表。
图片的播放顺序(POC)和编码顺序(EOC)一致。因此每帧图像仅参考播放顺序在当前编码图像之前的重建帧,视频序列按播放顺序编解码,不必等待编码顺序在当前图像后面而播放顺序在前面的图像的编解码,时延相对更小,低延时结构由此得名,主要是为交互式实时通信设计的,适合直播、视频通话等对时延要求较高的场景。一般直播的时候基本全是P帧,不会出现B帧,如果GOP包括B帧的话,会出现某一帧播放顺序在前,但编码顺序在后的情况,比如先编第1、32帧,再去编第16帧(参考第1和32帧),那么第16帧必须等32帧编完后才能播放,这个等待的时间就是时延。
随机接入编码结构(RA)
在典型RA配置中,第一幅编码图像为I帧图像,其余编码图像为具有显示顺序上过去的和将来的参考图像的B图像,如图所示。注意:这里面的B帧是分层的B帧((Hierarchical B)
由于参考图像队列中可以有显示顺序上将来的图像,因此编码效果更好,但图像的显示顺序和解码顺序不同,需要额外的输出时间。斜线左边的数字表示图像的显示顺序,右边表示图像的解码顺序,因此按照解码顺序排列的图像的显示顺序依次为0、8、4、2、1、3、6、5、7。箭头表示图像之间的参考关系,箭头指向的是参考图像。

同时会周期性地(大约每隔1秒)插入随机访问(Clean Random Access, CRA)帧,这些CRA帧成为编码视频流中的随机访问点(Random Access Point, RAP),RAP帧都是I帧。
所谓随机访问点是指对这些帧的解码可以独立进行,不需要参考比特流中前面已经解码的图像帧。这种随机访问方式使得序列在播放时可以实现无缝切换,有力地支持了信道转换、搜索以及动态流媒体服务等应用,比如点播业务。
GOP(Group of picture)
视频序列由若干时间连续的图像构成,在对其进行压缩石,先将该视频序列分割成若干个小的图像组GOP(Group of picture)。在视频编码中存在两种GOP类型:封闭式GOP(closed GOP)和开放式GOP(open GOP)。每个closed GOP以IDR帧开始,各个GOP间独立编解码;open GOP中,第一个GOP以IDR帧开始,后续GOP以non-IDR帧开始,后面GOP中的帧间编码图像可以越过non-IDR帧参考前面的GOP中的图像。
GOP是关键帧的周期,也就是两个I帧之间的距离。一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。
根据每帧中保留的信息划分,I帧是关键帧,保留了这一帧完整的画面信息,不需要参考其他帧;P帧是差异帧,记录了当前帧和上一关键帧的差别信息;B帧是双向差异帧,记录了本帧和前后帧的差别。
313

被折叠的 条评论
为什么被折叠?



