H.264学习(一)——帧和场的概念
一、何谓场?
每个电视帧都是通过扫描屏幕两次而产生的,第二个扫描的线条刚好填满第一次扫描所留下的缝隙。每个扫描即称为一个场。因此 25 帧/秒的电视画面实际上为 50 场/秒 (若为 NTSC 则分别为 30 & 60 - 因为我是中国人,因此我采用 PAL 的数值)。
若要取得包含最大细节的帧,您需要合并两个场内的信息。截至目前为止,这些观念都很简单,不过若考虑到动态画面,就不是那么容易了。因为摄像机将依次地扫描这两个场,影像内的所有文件到了第二个场中将移到不同于第一个场的位置。这将有助于电视画面的动作更为顺畅,不过这也是场在编辑时所会造成的困扰。
二、计算机与电视
当计算机在显示器上播放视频时,它只会显示一系列完整的帧,而不使用交错场的电视技巧。因此针对计算机显示器所设计的视频格式和 MPEG-1 都不使用场。专为这些格式设计的视频编辑软件就无法正确地处理场,因此不适合产生用于电视的视频。若您的影片将通过电视来播放,务必使用可处理场的编辑程序。
三、概述
原始视频帧(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频帧:连续或隔行视频帧,隔行视频帧包括顶场和底场,连续(遂行)扫描的视频帧与隔行扫描视频帧有着不同的特性和编码特征,产生了所谓的帧编码和场编码。一般情况下,遂行帧进行帧编码,隔行帧可在帧编码和场编码间选取。
在帧编码中,参考为帧图像,采用帧运动补偿,两个场是联合编码,;在场编码中,参考为场图像,两个场是分别编码,采用场运动补偿。
二、视频序列帧、场编码方式
1.固定帧编码(全帧)----视频序列的全部帧始终采用帧编码方式。
2.固定场编码(全场)
视频序列中帧被分成两个场独立编码。编码规则:
1. I帧可编码成两个I场或一个I场和一个P场,即II、IP.
2. P帧可编码成两个P场或一个P场和一个B场,即PP、PB.
3. B帧可编码成两个B场,即BB.
3.图像级帧、场自适应编码 (PAFF)
视频序列能被编码成一个帧或两个场,自适应选择原则是根据采用该种编码方式的每一帧的RD
值。
4.宏块级帧、场自适应(MBAFF)
为了进一步提高编码效率,采用了宏块级帧场自适应.,宏块级采用了宏块对(MBP)为基本编码单元(如图2所示)
H.264采用的MBAFF方案:
在图像中运动比较大的地方采用场编码,运动比较小的地方采用帧编码,编码顺序例子如下:
视频编码中的PAFF和MBAFF的区别 收藏
隔行扫描图像的每帧包括两个场,所以对于隔行扫描图像有三种编码方式:
1、将两场合并为一帧进行编码
2、将两场分别编码
3、将两场合并为一帧,但是在宏块级别上,将一个帧宏块划分为两个场宏块进行编码。
以上前两种编码方式称为图像自适应帧/场编码(PAFF),第三种称为宏块自适应帧/场编码(MBAFF)。
对于一个运动图像,由于场之间存在着较大的扫描间隔,所以帧中相邻两行之间的空间相关性相对于逐行扫描图像较小,因此对来两个场分别编码会更节省码流。对于一个非运动图像,相邻两行之间存在较大的空间相关性,将两场合并为一帧编码更有效。所以PAFF编码方式可以针对整个图像的编码方式做自适应调整,选择帧编码或场编码。
当图像同时存在运动区域和非运动区域时,PAFF的劣势便显现出来,PAFF的自适应粒度太粗,无法实现满足更加精细的编码要求,于是MBAFF应运而生。MBAFF对帧编码或场编码的选择是基于宏块的,MBAFF将两场合并为一帧进行编码,但将每一个帧宏块(16x16)划分为场宏块对(8*16),针对每一个帧宏块,比较帧编码和场编码产生的码流大小,使用最节省码流的方式。
H.264学习(一)——帧和场的概念相关推荐
- H.264学习历程(天之骄子)
半年前,我知道了H.264这个名词.那个时候决定学习H.264,可是我连资料都不知道如何收集.而且整个学校就只有我一个人在学习H.264,找不到人交流,所以那个时候学得真的是举步维艰,很痛苦,而能在网 ...
- H.264中IDR帧和I帧区别
IDR(Instantaneous Decoding Refresh)--即时解码刷新. I和IDR帧都是使用帧内预测的.它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I ...
- H.264学习网站及资源(不定时更新)
下载视频的网站 http://i21www.ira.uka.de/image_sequences/ http://trace.eas.asu.edu/yuv/index.html http://www ...
- H.264学习笔记2——帧内预测
帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值. ...
- H.264学习--1
1.宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为 ...
- MPEG4 H.264学习笔记之三 ------ 熵编码
3.5 熵编码 熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或是存储的压缩码流.输入的符号可能包括量化的变换系数(像上面所说的运行级或零树),运动向量(对于每个运动补偿块的向量值x和y) ...
- FFmpeg的H.264解码器源代码简单分析:宏块解码(Decode)部分-帧间宏块(Inter)
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- FFmpeg的H.264解码器源代码简单分析:宏块解码(Decode)部分-帧内宏块(Intra)
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- 【视频编解码·学习笔记】2. H.264简介
一.H.264视频编码标准 H.264视频编码标准是ITU-T与MPEG合作产生的又一巨大成果,自颁布之日起就在业界产生了巨大影响.严格地讲,H.264标准是属于MPEG-4家族的一部分,即MPEG- ...
最新文章
- Pycharm显示行号,修改字号大小
- Linux系统资源监控--linux命令、nmon和spotlight
- 阿里云云市场双11战报:30分钟破100万,单品销量暴涨300倍!
- Struts2学习总结二
- Javascript的怪癖
- 开启SAP CDS view DCL前后的读取性能对比
- C#设计模式之二十一访问者模式(Visitor Pattern)【行为型】
- 2021“数维杯”国际大学生数学建模竞赛C题思路
- HDU - 5699(79/600)
- 职业规划-IT方向(超详细,超具体)
- qcon_从QCon伦敦2010中学到的重点知识和教训
- 【Pytorch】量化
- Geoserver发布切片地图组完整教程
- C语言 线程的回收与子线程返回值的接收
- HTML5 postMessage 和 onmessage API 详细应用
- 做到这一点,你也可以成为优秀的程序员
- Android初学习
- windowsthinpc虚拟内存_瘦身版Win7:WinTPC深入体验
- 迅雷7.2.2.3188去广告优化版|组件可选+边下边看+限制上传速度+点亮VIP6图标
- 记录原神模型导入Unity3D