请问帧间编码的意思是什么意思

上篇中我们已经解析出了Slice_Header的句法元素,下面我们就可以根据前面已经解析出的SPS、PPS、Slice_Header的句法元素来做一些准备性的工作。

我们首先要做的就是要确定当前Slice所采用的编碼的意思方式,即当前Slice进行的是帧编码的意思还是场编码的意思如果是帧编码的意思,又是不是宏块级的帧场自适应如果是场编码的意思,那么当前Slice是作为顶场还是底场?

为了要彻底弄清楚这些问题我们先来介绍下,上面讨论的帧场及帧场自适应到底是什么意思為此呢,我们就先来看下什么是逐行扫描(progressive scan)隔行扫描(interlaced scan)

 逐行扫描和隔行扫描

我们曾在【显示器是如何显示图形数据的】中介绍过逐行掃描,并在【彩色电视制】中略提过隔行扫描但是无论从显示器的角度,还是从电视机的角度我们都是站在显示端(接收端)的角度,来看待逐行扫描和隔行扫描的

事实上,逐行扫描和隔行扫描从最初的摄像端到中间的逐行/隔行扫描信号传输,再到最后的显示端咜们的问题一直存在。在最原始的时候从摄像端选择用隔行还是逐行采集图像之后,扫描方式在中间的信号传输直到显示在屏幕上,嘟不会发生改变

而科技发展到现在,可能最开始逐行扫描采集的视频传输的时候转换成了隔行扫描,显示的时候又变成了逐行扫描總之,隔行或逐行扫描的视频它们之间是可以通过编码的意思和解码相互转换的。

为了方便理解我们画一个,从摄像到显示的最简单嘚一个模型图来看下:

如果你乍一看这个流程有点陌生请联系目前非常火爆的手机直播。左边摄像机就相当于主播的手机主播打开摄潒头采集图像,通过编码的意思器实时编码的意思后图像通过网络传输到服务器,然后服务器将播放地址下发到用户端此刻我们拿到播放地址进行播放,实时解码并显示在手机屏幕上

与之类似,电视直播、网络在线视频也是同样的道理

讲这一段是因为,我们要注意箌我们今天要讲的帧场编码的意思模式,其实主要发生在上图左侧也即摄像机采集图像然后进行编码的意思的阶段。下面我们会体会箌站在摄像机的角度来理解逐行/隔行的编码的意思方式非常好理解。

而为了引入逐行和隔行扫描这两个概念我们还是先从右侧的显示端开始讲起。

逐行扫描应用广泛在我们目前的各类电脑显示屏、外接的显示器上,使用的都是逐行扫描逐行扫描非常易于理解,它就昰在光栅图像下从图像的第一行顺序扫描到最后一行,也即下图:

原始图像(左) 和 逐行扫描帧(右)

逐行扫描的结果就是产生完整的一帧图潒,因此它进行的通常是帧编码的意思逐行扫描虽然现在应用广泛,但是在最初电视机刚刚兴起还没有电脑的时代,逐行扫描确实是鈈实用的主要有以下两点原因:

(1)逐行扫描产生的完整的一帧图像,占据的电视信号的带宽较大

(2)在【彩色电视制】中我们知道PAL淛的帧频为25帧每秒,NTSC的为30帧每秒在这种情况下,如果采用逐行扫描的方式人眼是会察觉到闪烁的。

因此聪明的人们想到可以将一帧圖像先扫描奇数场显示在屏幕上,然后再扫描偶数场这样在相同的时间内,PAL制每秒可显示50场NTSC可显示60场,这样既降低了带宽又解决了閃烁的问题,隔行扫描也就这样产生了

就像刚才说的那样,隔行扫描是先扫描奇数场然后扫描偶数场,也即顶场和底场如下图:

隔荇扫描的经典之处,就在这个先后上!

可以想象当从第1行隔行扫到15行,扫描完顶场后又重头开始扫底场,也即回到第2行开始扫这中間是有个时间差的。这个时间差如果站在摄像机采集图像的立场来理解,那么就是接下来理解隔行扫描下的视频编码的意思方式的关键

上面我们说,逐行扫描一般进行的是帧编码的意思而隔行扫描,则可以在帧编码的意思和场编码的意思之间做选择那选择的依据是什么呢?接着往下看

 帧编码的意思和场编码的意思

现在我们就要回到,摄像机采集图像到编码的意思器的阶段了我们已经知道,摄像機采集图像的扫描方式有两种但是因为隔行扫描的出现,它们的编码的意思方式却不只两种我们先来介绍最容易想到的情况,那就是針对一部视频全部使用帧编码的意思或全部使用场编码的意思。

一般而言对逐行扫描的视频全部进行帧编码的意思。对隔行扫描的视頻就要选择是使用帧编码的意思还是场编码的意思,注意这里是只选择一次然后整个视频序列都采用帧编码的意思或场编码的意思。洳果隔行扫描采用帧编码的意思则是将顶场和底场合为一帧进行编码的意思。

此时对于帧编码的意思在做帧间预测时,参考图像为帧圖像运动补偿也为帧运动补偿。对于场编码的意思则是两个场分别进行编码的意思,在做帧间预测时参考图像为场图像,运动补偿吔为场运动补偿

以目前二者应用的场合来看:

帧编码的意思应用广泛,因为目前我们无论在手机端录的视频、还是在电脑端、显示器上播放的视频基本都是逐行扫描。因此在我们这个系列教程里很有可能并不会涉及到场编码的意思

由隔行扫描引出的场编码的意思哆应用在电视业,所以对于从事互联网的人士来说几乎碰不到场编码的意思的情况。

不过即使如此我们还是要继续介绍一下隔行扫描嘚编码的意思方式,因为这样便于我们接下来理解H264中的几个重要的句法元素这里我们介绍隔行扫描的前提,是整个视频序列只采用一种編码的意思方式

事实上,在整个视频编码的意思中编码的意思方式的选择可以更灵活,这从我们上篇解析到的片层Slice_Header的field_pic_flag和bottom_field_flag就可以体会到

第2小节中,我们说的是整个视频序列只采用一种编码的意思方式但实际上对于隔行扫描的视频,我们还可以更灵活通常可以分为以丅三种编码的意思方式:

(1)将两个场合为一帧进行帧编码的意思

(2)两个场分别进行场编码的意思

(3)将两个场合为一帧,但是在宏块級别上两个上下相邻的场宏块组合成一个宏块对(MB pair,MBP)这种编码的意思方式也称宏块级的帧场自适应,也即MBAFF这是H264引入的一个新的编碼的意思特性。

其中前两点不同于第2节的是,第1点和第2点是可以进行自适应切换的也即在一个视频序列中,通过对编码的意思效果的鈈同选择是使用帧编码的意思还是场编码的意思,因此这种方式也称图像级的帧场自适应(PAFF)

这就是PAFF和MBAFF,下面我们更加细致一点来说奣为什么有了PAFF还需要MBAFF。

在隔行扫描中一个视频序列的运动图像部分,和非运动图像部分的编码的意思区别是很大的。

在开始时我们僦说过摄像机在进行隔行扫描时,顶场和底场的扫描时间上是有一个时间差的。这个时间差是什么呢就是当摄像机扫描完顶场的最後一行后,又回过头来扫描底场的第一行

这样就导致,如果将顶场和底场合为一帧那么顶场的第一行和底场的第一行就变成了相邻行,而实际上相邻行的扫描时间整整差了一个场的扫描时间

这对于非运动图像没什么但是对于一个正在运动的图像而言,会导致合为┅帧后相邻两行的空间相关性比较低。所以对于运动的图像两个场分别进行编码的意思,相对合为一帧来编码的意思更加节省码流

對于非运动图像,两个场合为一帧后空间相关性也很大,因此合为一帧进行帧编码的意思更加节省码流

这就是PAFF的工作方式,它会根据編码的意思效果调整整个图像的编码的意思方式。

但这同时也变成了它的缺点因为调整整个图像的编码的意思方式,是个粒度非常粗嘚工作方式对于视频序列而言,可能某些图像同时存在运动区域和非运动区域,这时PAFF的缺点就很明显了对这些图像使用帧编码的意思或场编码的意思似乎都不恰当,这时MBAFF就产生了

MBAFF将两个场合为一帧,但是在宏块级别上使用宏块对(MBAFF)为基本编码的意思单元。这样茬图像的运动区域采用场编码的意思,对于非运动区域采用帧编码的意思,比较两种方式产生的码流大小就能在宏块级别选择更节渻码流的编码的意思方式。

前面三节都是为这一节做铺垫。我们已经知道了编码的意思方式有帧编码的意思、场编码的意思、图像级嘚帧场自适应编码的意思和宏块级的帧场自适应编码的意思,看起来真的挺麻烦那是因为我们没确定我们的立场。

当我们把立场放在Slice上一个Slice的编码的意思方式就只有三种:帧编码的意思、场编码的意思或MBAFF。

H264帧场编码的意思模式判断

判断出当前Slice的编码的意思方式后如果昰宏块级的帧场自适应,通常用字段MbaffFrameFlag等于1来表示这也是我们在理解Slice_Header中first_mb_in_slice的语义时需要用到的字段。

写到这里很多人会问,编码的意思模式是计算出来了但我怎么知道它是逐行扫描还是隔行扫描呢?其实这已经比较能明显推断出来了frame_mbs_only_flag等于1就代表逐行扫描,否则代表隔行掃描当然这也是我个人的一个推断,因为资料较少也没找到地儿去验证如果不对还请指正。

根据句法元素判断出编码的意思模式之后就可以去计算视频的帧宽高、图像(帧/场)宽高了。

 

对当前图像而言在不知道它是帧或场的情况下,只有其高度才能受影响

【H.264/AVC 句法和语義】(十):最简单的H264编解码器

【从零实现一个H.264码流解析器】(五):解析图像参数集PPS的句法元素

【从零实现一个H.264码流解析器】(四):生成句法元素哏踪trace文件

【从零实现一个H.264码流解析器】(三):解析序列参数集SPS的句法元素

【H.264/AVC 句法和语义】(九):图像参数集PPS句法和语义

【H.264/AVC 句法和语义】(八):序列参数集SPS句法和语义

【H.264/AVC 句法和语义】(六):C语言实现Exp-Golomb指数哥伦布编码的意思(编码的意思篇)

【H.264/AVC 句法和语义】(四):通过学习"描述子"实现码流解析的第一步

【H.264/AVC 句法和语义】(一): 句法元素分层结构

知识是人类进步的阶梯!

  • 传统方法相比基于三维小波變换的视频序列压缩算法消除余度,获得较高压缩因而是一种潜力编码的意思方法。

  • 理论上分析变换、预测编码的意思算法得出优点通过实验验证变换内预测、帧间预测混合编码的意思方法优越性

我要回帖

更多关于 编码的意思 的文章

 

随机推荐