摘要:
仅仅使用前一个显示的基准帧来编码的帧被称为P帧,同时使用前一个显示帧和未来帧作为基准帧进行编码的帧称为B帧.在通常的场景中,编解码器编码一个I帧,然后向前跳过几个帧,用编码I帧作为基准帧对一个未来P帧进行编码,然后跳回到I帧之后的下一个帧。编码的I帧和P帧之间的帧被编码为B帧。之后,编码器会再次跳过几个帧,使用第一个P帧作为基准帧编码另外一个P帧,然后再次跳回,用B帧填充显示序列中的空隙。这个过程不断继续,每12到15个P帧和B帧内插入一个新的I帧。例如,图1种给出了一个典型的视频帧序列。 图1通常,更换场景后的第一帧就是I帧,I帧应当全帧传送。从压缩的程度来看,I画面的压缩量最少;P画面次之 阅读全文
摘要:
一、概述原始视频帧(最原始的视频数据)根据编码的需要,以不同的方式进行扫描产生两种视频帧:连续或隔行视频帧,隔行视频帧包括顶场和底场,连续(遂行)扫描的视频帧与隔行扫描视频帧有着不同的特性和编码特征,产生了所谓的帧编码和场编码。一般情况下,遂行帧进行帧编码,隔行帧可在帧编码和场编码间选取。帧、场的 临近行相关性并不相同。 帧的临近行相关性强,实践相关性弱,因为某行的临近行(下一行)要一场扫描完才能被扫描,因此在压缩静止图像或运动量不大的图像时采用帧编码方式。场的临近行时间相关性强,空间相关性差,因为场的一行扫描完毕,接着对场中下一行扫描,因此对运动量大的图像采用场编码方式,实际的视频图像有快有 阅读全文
摘要:
分析encode_one_frame函数. 先来看下结构体Sourceframe的定义:typedef struct{ // Size info int x_size, y_framesize, y_fieldsize; char *yf, *uf, *vf; //!< frame representation char *yt, *ut, *vt; //!< top field char *yb, *ub, *vb; //!< bottom field} So... 阅读全文
摘要:
邻编码单位(一般是宏块Macroblock,故意下均用宏块替代)来预测欲编码的编码单位inter+v:帧间编码模式,指利用图像的时间相关性进行编码,通俗点说就是利用参考帧中位置相同的宏块(或者相邻宏块)来预测欲编码的宏块同帧间编码模式,参考帧中的参考宏块要加一个位移矢量(MV,Motion Vector)inter+4v:同上,不过吧一个宏块分成四个块(block),每个块一个位移矢量inter+Q:同帧间编码模式,不过量化步长不再是固定值,可以变化MVD 差分运动向量MV 运动向量MB宏块BAB 二进制多边形掩码CAE 上下文相关算术编码器AAC 高级(改进?)音频编码Alpha plane 阅读全文
摘要:
图像、帧、片、NALU 是学习 H.264 的人常常感到困惑的一些概念,我在这里对自己的理解做一些阐述,欢迎大家讨论:H.264 是一次概念的革新,它打破常规,完全没有 I 帧、P帧、B 帧的概念,也没有 IDR 帧的概念。对于 H.264 中出现的一些概念从大到小排序依次是:序列、图像、片组、片、NALU、宏块、亚宏块、块、像素。这里有几点值得说明:(1)、在 H.264 协议中图像是个集合概念,顶场、低场、帧都可以称为图像(本文后面内容用到图像概念时都是集合概念,不再重复说明)。因此我们可以知道,对于 H.264 协议来说,我们平常所熟悉的那些称呼,例如:I 帧、P 帧、B 帧等等,实际上 阅读全文
摘要:
这几个概念对比音频信号处理可是全新的,下面简要介绍一下定义和作用:1、宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。宏块分为I、P、B宏块,I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;B宏块则是利用前后向的参考图形进行帧内预测;以下是宏块的句法单元,来自参考文献22、片(Slice):一帧视频图像可编码成一个或者多个片,每片包含整数个宏块,即每片至少一个宏块,最多时包含整个图像的宏块。 片的目的:为了限制误码的扩散和传输, 阅读全文
摘要:
H.264编码系统比较复杂,这里是它的几个比较重要的算法:1. Configure()函数,用于解析命令行参数,读取配置文件,其中,ac表示命令行参数数量,av表示命令行参数。void Configure(int ac,char *av[ ]){……}2. AllocNalPayloadBuffer()函数,用于初始化NAL模块,即分配NAL_Payload_buffer缓冲区。AllocNalPayloadBuffer(){……}3. init_poc()函数的作用是用适合的参数初始化进程结构。init_poc(){……}4. init_img()函数的作用是用合适的参数初始化图像结构,其中 阅读全文
摘要:
1、下载并解压 JM 源代码2、检查源代码根目录下的 bin 文件夹,确保存在编码配置文件(encoder_*.cfg)、待编码视频序列文件(foreman_part_qcif.yuv,对应为编码配置文件中 InputFile 参数的值)和解码配置文件(decoder.cfg)3、打开源代码根目录下的工作区 tml.dsw编码:4、鼠标左键选中 lencod 工程5、打开 Project -> Settings -> Debug ,在 Working directory 选项中填写 ./bin,在 Program arguments 选项中填写需要使用的编码配置文件,例如:-d e 阅读全文
摘要:
是的版本信息:* Copyright (C) 2003 Laurent Aimar* $Id: x264.h,v 1.1 2004/06/03 19:24:12 fenrir Exp $说明一下,只为亲手试一下一些选项,看是不是能用,取值是随意的。x264-helpx264 -o test.264 bowing_cif.y4m 352x288x264-otest.264176x144.yuv (不再另外指定宽和高,直接从文件名中分析出来了)D:\test>x264 --crf22 -o test.264 hall_cif.yuv 352x288D:\test>x264--crf30 阅读全文
摘要:
1. MPEG moving picture experts group 动态图像专家组2.GOP Group of Picture 画面群 连续的帧图片组合即为GOP一种图像压缩技术3.AVC Advanced Video Coding 高级视频编码 ITU-T给这个标准命名为H.264(以前叫做H.26L),而ISO/IEC称它为MPEG-4 高级视频编码(AVC),并且它将成为MPEG-4的第10部分。4.ITUInternational Telecommunications Union国际电信联盟联合国于1865年成立的制定国际电信标准的专门机构。5.ISOInternational 阅读全文