
视频编解码
文章平均质量分 62
研究生期间接触了H265和H266,对两种标准的编码有一个整体的认识与了解。
奈何业界最常用的还是H264,希望我能接受满书的宏块而不是编码单元哈哈哈哈
RRRR_ChiAn
这个作者很懒,什么都没留下…
展开
-
x264-参数
X264算法参数一(X264线程参数)_CrystalShaw的博客-优快云博客_x264线程X264算法参数二(VUI参数配置)_CrystalShaw的博客-优快云博客X264算法参数三(Bitstream parameters)_CrystalShaw的博客-优快云博客X264算法参数四(analyse parameters)_CrystalShaw的博客-优快云博客X264算法参数五(码控参数)_CrystalShaw的博客-优快云博客_码控算法X264算法参数六(动态转载 2022-03-15 21:27:03 · 274 阅读 · 0 评论 -
x264-1pass和2pass
直观的性能对比:视频序列:crowd_run_1080p50.y4m参数设定:1pass的:time x264 --profile high --preset veryslow --tune film --psnr --ssim --nal-hrd vbr --bitrate 10000 --pass 1 -o 1pass.h264 crowd_run_1080p50.y4m 2pass的:time x264 --profile high -...转载 2022-03-15 17:31:59 · 1070 阅读 · 0 评论 -
x264-VBV(video buffering verifier)
VBV的作用:处理各帧编码后大小不一和恒定输出码率的矛盾。可以将VBV想象成为一个水池,水池的入口连接着encoder的输出,出口为恒定码率的网络输出。为了使得输出恒定,encoder必须保证水池既不上溢也不下溢。上溢会导致数据丢失,下溢会导致无数据输出。所以encoder在编码一帧时会参考当前VBV的充盈情况,并由此计算出,当前帧应该编码出多少bit,从而保证既不会上溢(增加QP)也不会下溢(减少QP)。VBV的参数:bufsize:...转载 2022-03-15 16:19:28 · 1342 阅读 · 0 评论 -
x264-几种码控模式
CRF(Constant Rate Factor):转载于:ffmpeg与x264编码指南_暂时为空-优快云博客_ffmpeg ultrafast该方法在输出文件的大小不太重要的时候,可以使整个文件达到特定的视频质量。该编码模式在单遍编码模式下提供了最大的压缩效率,每一帧可以按照要求的视频质量去获取它需要的比特数。不好的一面是,你不能获取一个特定大小的视频文件,或者说将输出位率控制在特定的大小上。量化比例的范围为0~51,其中0为无损模式,23为缺省值,51可能...翻译 2022-03-15 15:42:12 · 953 阅读 · 0 评论 -
lookahead相关贴汇总
x264 lookahead阶段详解 - 十方云山 - 博客园 (cnblogs.com)x264 MB-tree实现细节 - 十方云山 - 博客园 (cnblogs.com)转载 2022-02-24 10:58:46 · 210 阅读 · 0 评论 -
码率控制相关贴汇总
为了更全面的学习码率控制相关的知识,下面列举了在互联网中搜寻到的一些帖子,如果其他的请留言补充。转载 2022-02-19 15:17:14 · 162 阅读 · 0 评论 -
H264/AVC SEI和VUI
Supplemental Enhancement Information(SEI)和Video Usability Information(VUI)是可以作为264码流的一部分被传输的参数。SEI和VUI参数可能对解码器有用,但对基本解码过程(basic decoding process)不是必要的。SEI一个SEI信息以SEI RBSP形式传输,每个SEI信息作为一个独立的NALU发送。下面是一些SEI信息。VUIVUI信息在PPS的可选结构中传输,VUI参数语法结构包含标志和参数,具原创 2022-02-17 15:00:41 · 1984 阅读 · 0 评论 -
H264/AVC 数据的传输
RBSP、NALU和packet封装(encapsulation)264的语法元素被封装到Raw Byte Sequence Payload(RBSP)中,然后被封装到Network Abstraction Layer Units(NALU)中。下图显示了已编码slice、SPS和PPS的语法元素序列。语法元素的形式是长度不同的二进制码流,长度可能是字节的整数倍,也可能不是字节的整数倍。必要时会在RBSP末尾添加一系列0,以保证长度是字节的整数倍。RBSP封装在NALU中,通过(1)添加一个1字原创 2022-02-16 23:29:40 · 1378 阅读 · 0 评论 -
H264/AVC 用于传输的编码工具
考虑到H.264的大多数应用都涉及到对压缩比特流的通信或存储,该标准指定了许多旨在支持高效和健壮传输的特性或工具。Baseline和Extended Profiles支持Redundant Slice、Arbitrary Slice Order和Flexible Macroblock Order;Extended Profiles支持Data Partitioned Slice、SI Slice和SP Slice。值得注意的是,这些特性还没有被商业H.264/AVC编解码器广泛采用,大多数编解码器倾向于使用原创 2022-02-15 18:05:11 · 917 阅读 · 0 评论 -
H264/AVC Conformance testing
旨在验证编码的码流和解码器是否符合H.264/AVC要求。1. 验证码流是否符合要求方法比较直接:使用参考软件JM去解码。如果码流有问题,那么解码器就会输出错误信息。2. 验证解码器是否符合要求解码器应该能够解码在profile和level设定下的任何码流。检查解码器是否符合264的要求可以通过让其解码一组Conformance Test Bitstreams来进行。符合标准的解码器应该能够获取正确的视频序列(帧/场的顺序正确,输出帧之间有正确的时序关系)。...原创 2022-02-13 20:27:52 · 1203 阅读 · 0 评论 -
H264/AVC Hypothetical Reference Decoder(HRD)
除了确保解码器能够处理264码流中的语法元素和序列参数外,确保编码序列“符合”解码器缓冲和处理能力的限制也很重要。这是通过定义HRD来处理的,HRD是一种虚拟缓冲算法,可以用来测试编码码流的行为以及其对真实解码器的影响。先看一下264的编解码过程:视频帧被编码以产生码流,该码流在传输前被缓冲。当一个帧n被编码时,编码缓冲器被bn个编码比特填充。编码器缓冲器以传输通道的速率(每秒rc个比特)清空。从信道中到达的比特以每秒rc个比特的速度填充编码图像缓冲区(CPB)。解码器从CPB中解码帧,并将解码原创 2022-02-13 17:06:35 · 2941 阅读 · 2 评论 -
H264/AVC Profile和Level
Profile对解码器设置算法约束,确定解码器应该能够处理哪些解码工具。Level对解码器设置数据处理和存储约束,决定解码器应该能够存储、处理和输出多少数据。一个H.264解码器可以通过提取profile和level参数,从而确定解码器的能力是否支持这些参数,进而确定它是否能够解码某个特定的流。Profile264规定了一系列profile,每个profile都指定了264可用的编码工具的一个子集。profile限制了264解码器所需的算法。因此,符合264 Main Profile的解码器原创 2022-02-13 16:03:08 · 1841 阅读 · 0 评论 -
H264/AVC 宏块层
宏块层(macroblock layer)包含解码单个宏块所需的所有语法元素,见下图:mb_type:表示宏块编码类型,I, SI, P或B,以及关于宏块预测和编码的进一步信息(例如尺寸)。I宏块可以出现在任何片类型中,并且在编码时不引用任何其他片。SI宏块仅在SI片中出现。P宏块可以出现在P或SP片中,并利用一个预测参考进行帧间编码。B宏块出现在B片中,并利用一个或两个预测参考进行帧间编码。注:对于P或B片中的skip宏块,并不传输mbtype,当在片数据层中提示skip宏块时,这些宏块的mb_.原创 2022-02-12 22:04:42 · 675 阅读 · 0 评论 -
H264/AVC Parameter Sets的激活
一个参数集在被激活之前是‘inactive’的,即它的参数不被解码器使用。先前传送给解码器的PPS,当它在一个片头中被引用时被激活(视频序列中的每个编码切片可以引用/激活若干PPS中的一个),并且一直保持激活状态,直到另一个不同的PPS被激活。当引用SPS的PPS时,SPS被激活。一个单独的SPS在整个编码的视频序列中保持激活状态,由于序列必须从一个IDR访问单元开始,因此一个SPS会被一个IDR片有效地激活。...原创 2022-02-11 21:17:05 · 324 阅读 · 0 评论 -
H264/AVC 解码 帧间预测
码流进入解码器,先后通过“获取MV和参考索引操作”和“帧间预测像素解码操作”得到帧间预测像素矩阵,包括1个16×16的亮度矩阵和2个8×8的色度矩阵。获取MV和参考索引操作这时候的码流中的数据是mbPartIdx和subMbPartIdx,经过“获取MV和参考帧索引操作”后输出的数据是mvL0、mvL1、mvCL0、mvCL1、refIdxL0、refIdxL1、predFlagL0和predFlagL1。1. 当宏块为普通类型时,计算mvL0/1使用的公式和流程如下:mvL0/1[0/1]原创 2022-02-11 17:43:31 · 992 阅读 · 0 评论 -
H264/AVC 解码 帧内预测
在帧内预测中,当前编码的宏块上方及左侧的宏块用于计算出当前宏块的预测值。当前宏块与其预测值的差值将进一步编码并传输到解码器。解码器利用码流中用于表示预测方式和预测残差的bits来解出当前宏块的预测值。此外,264提供了PCM编码模式,即码流中传输的就是像素值,解码器只负责接收就可以,没有其他计算。264提供了四种帧内预测方式:分别是4×4亮度块的帧内预测、16×16亮度块的帧内预测、8×8色度块的帧内预测和PCM帧内预测模式。4×4亮度块预测解码4×4亮度块一共有8种帧内预测角度+1个DC预测,原创 2022-02-11 16:23:30 · 560 阅读 · 0 评论 -
H264/AVC 片数据分割的解码
(似懂非懂,需要回顾)解码器根据一个片的A 型数据分割RBSP,如NAL类型为3或4时,还有一个属于同一片的B型数据分割RBSP或C型数据分割RBSP,来产生一个完整的编码片。当不使用片数据分割时,编码片仅有一个片层,没有数据分割RBSP。分割RBSP包含一个片头,后跟包含了片中宏块数据的分类2、3、4 语法元素的一个片数据语法结构。当使用片数据分割时,片中的宏块数据分割成1到3个分割并位于单独的NAL单元中。分割A包括一个片数据分割A头部和所有的第2类语法元素。分割B包括一个片数据分割B头原创 2022-02-10 20:36:46 · 311 阅读 · 0 评论 -
H264/AVC 宏块片组映射图的产生
(这一届内容不太友好,没看懂,后面会回顾重新理解)解码器在对每个片解码之前,首先需要基于当前有效图像参数集和需解码的片头,产生“宏块片组映射图”变量MbToSliceGroupMap,该变量对于一个接入单元中的所有片均有效。当num_slice_groups_minus1等于1而且slice_group_map_type等于3、4或5时,片组0和1的大小和形状根据下表由“片组变化方向标记”slice_group_change_direction_flag确定。按照定义的增长顺序的片组图单元Map原创 2022-02-10 20:31:53 · 605 阅读 · 0 评论 -
H264/AVC 解码时POC的计算
POC用于标识图像的播放顺序,同时还用于在对帧间预测片解码时,标记参考图像的初始图象序号,表明下列情况下帧或场之间的图像序号差别:使用直接预测模式的运动矢量推算时;B片中使用固有模式加权预测时;解码器一致性检查时。264对每个编码帧有两个图像序列号,分别成为顶场序列号(TopFieldOrderCnt)和底场序列号(BottomFieldOrderCnt)。这两个序列号分别指明了相应的顶场/底场相对于前一个IDR图像(或解码顺序中前一个包含memory_management_control_operat原创 2022-02-09 22:41:43 · 1100 阅读 · 0 评论 -
H264/AVC NAL单元和解码
在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的;它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口。网络层和传输层的RTP封装只针对基于NAL单元的本地NAL接口,且每个NAL单元都只包含整数个字节。NAL单元结构一个NAL单元定义了可用于基于包和基于比特流系统的基本格式,区别这两种格式的方法在于每个比特流传输层都有一个起始代码。在NAL解码器接口,它假定按传输顺序传递NALU,同时,在NALU的头部设原创 2022-02-09 16:14:56 · 1809 阅读 · 0 评论 -
H264/AVC 解码器原理
264包括VCL(视频编码层)和NAL(网络提取层),VCL包括核心压缩引擎和块、宏块和片的语法级别定义,它的设计目标是尽可能地独立于网络进行高效编码;NAL则负责将VCL产生的比特字符串适配到各种各样地网络和多元环境中,它覆盖了所有片级别以上的语法级别,同时支持以下功能:支持独立片解码;起始码唯一保证;支持SEI;支持流格式编码数据传送。总体来说,NAL解码器负责将符合264规范的压缩视频流解码,并进行图像重建。大致流程为:从NAL中接受压缩的比特流,经过对码流进行熵解码获得一系列量化参数X;这些系数原创 2022-02-09 15:53:46 · 753 阅读 · 0 评论 -
H264/AVC 句法
在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特构成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表示句法元素的组织结构。句法元素的分层结构码流是由一个个句法元素依次衔接组成的,码流中除了句法元素并不存在专门用于控制或同步的内容。264中,句法元素被组织成有层次地结构,分别描述各个层次的信息,如下所示:264中,句法元素共被组织成序列、图像、片、宏块、子宏块五个层次。句法元素的分层结构有助于节省码流(例如将不同片的公共信息抽取出来,形成图像一级的句法元素,原创 2022-02-09 15:19:20 · 419 阅读 · 0 评论 -
H264/AVC 数据分割片和传输
数据分割片组成片的编码数据存放在3个独立的DP(数据分割,A、B、C)中,各自包含一个编码片的子集。分割A包含片头和片中每个宏块头数据。分割B包含帧内和SI片宏块的编码残差数据。分割C包含帧间宏块的编码残差数据。每个分割可放在独立的NAL单元并独立传输。由A、B和C中的数据可知A是很重要的,即A对传输误差很敏感。解码器可以按着要求仅解码A和B或者A和C,以降低在一定传输条件下的复杂度。传输264的编码视频序列包括一系列NAL单元,每个NAL单元包含一个RBSP...原创 2022-02-08 21:06:51 · 556 阅读 · 0 评论 -
H264/AVC 参考图像管理
264中,已编码图像存储在编码器和解码器的参考缓冲区(DPB,解码图像缓冲区),并由相应的参考图像列表list0,以供帧间宏块的运动补偿预测使用。对B片预测而言,list0包含当前图像的前面和后面两个方向的图像,并以显示测序排列。也可同时包含短期和长期参考图像,短期参考图像由帧号标定,长期参考图像由LongTermPicNum标定,保存在DPB中,直到被代替或删除。当一幅图像在编码器被编码重建或在解码器被解码时,它存放在DPB并标定为以下中的一种:1)“非参考”,不用于进...原创 2022-02-08 20:50:36 · 1220 阅读 · 0 评论 -
H264/AVC 码率控制
春节快乐呀,前面种种原因停更了一段时间,现在继续看看书。264仅规定了编码后bit stream的句法结构和解码器的结构,对于编码器的结构和实现模式没有具体的规定。在进行压缩编码时,编码器通过相应的编码控制算法已确定各种编码模式,如宏块的划分类型、运动矢量以及量化参数等,已选定的各种编码模式进一步确定了编码器输出比特流的比特率和失真度。264采用基于Lagrangian优化算法的编码控制模型,其编码性能相较于以往的所有编码标准有了重大提高。视频编码...原创 2022-02-08 20:38:27 · 682 阅读 · 0 评论 -
H264/AVC SP/SI的基本原理
从SP/SI的应用可知,SP帧分为主SP帧(Primary SP-Frame)和辅SP帧(Secondary SP-Frame)。其中,前者的参考帧和当前编码帧同属于一个码流,而后者则不属于同一个码流。如下图所示,主SP帧作为切换插入点,不切换时,码流进行正常的编码传输;而切换时,辅SP帧取代主SP帧进行传输。其中,Δ表示编码器的输入;⚪表示解码器的输出。由图可知,解码出来的是B2,而非辅SP。 下面描述SP帧实现的功能原理。SI帧的功能实现与SP帧相类似,都能恢复出...原创 2022-01-11 23:31:19 · 1096 阅读 · 0 评论 -
H264/AVC SP/SI的应用
SP和SI是干什么的为了顺应视频流的带宽自适应性和抗误码性能的要求,定义了SP帧和SI帧。SP帧编码的基本原理同P帧类似,两者的差异在于SP帧能够参考不同参考帧重构出相同的图像帧。(要注意这里并不是说的单向多参考帧)充分利用这一特性,SP帧可取代I帧,广泛应用于流间切换(bitstream switching)、拼接(splicing)、随机接入(random access)、快进快速(fast forward,fast backward)和错误恢复(error recovery)等应用中,同时大大原创 2022-01-10 12:08:23 · 913 阅读 · 0 评论 -
H264/AVC 档次
时隔很久,终于有时间再看一看264了,这次了解一下“档次”的概念。264支持三个不同档次,分别为:基本档次:主要用于“视频会话”,如会议电视,可视电话,远程医疗,远程教学; 扩展档次:主要用于网络的视频流,如视频点播; 主要档次:主要用于消费电子应用,如数字电视广播,数字视频存储。264中的每一种档次支持一组特性的编码功能,并支持一类特定的应用。基本档次:利用I和P Slice支持帧内和帧间编码,支持利用基于上下文的自适应变长编码进行熵编码(CAVLC); 扩展档次:支持码流之间的有效切原创 2022-01-10 10:50:57 · 365 阅读 · 0 评论 -
H.264/AVC 变换量化
先说一句,在传统的混合编码框架中,预测和变换是不会产生失真的,只有量化才会导致失真。貌似264没有把变换和量化分的很清楚,没有特别明显的界限感,下面实际看看。264的basic transform或者说是core transform是4x4或者8x8的整数变换,是DCT的近似。...原创 2021-10-16 21:30:34 · 452 阅读 · 0 评论 -
H.264/AVC 环路滤波
今天看看264的滤波。和265、266比起来,264只有一个DBF,看看有没有有意思的地方。264的滤波位置与265和266相同。具体的处理方式和265有区别:265是以8x8的块为基础,264是以宏块中的4x4块为基础。Filtering is applied to vertical or horizontal edges of 4x4 blocks in a macroblock excluding edges on slice boundaries, in the following原创 2021-10-15 11:07:10 · 414 阅读 · 0 评论 -
H.264/AVC 帧间预测
首先介绍一下帧间的划分264的帧间预测块尺寸包含了16x16到4x4。每个宏块(16x16)可以使用4种方式进行划分:1个16x16,2个16x8,2个8x16,4个8x8,叫做宏块划分。在8x8的情况下,子宏块还可以继续划分:1个8x8,2个4x8,2个8x4,4个4x4,叫做子宏块划分。上述划分方式的简单示意图如下:上述划分描述的是亮度分量,对于色度分量来说,色度块的尺寸是亮度块的一半,且色度块的划分方式和亮度块相同。每个宏块划分和子宏块划分都有一个或两个MV(P/B),每.原创 2021-10-12 22:33:45 · 908 阅读 · 2 评论 -
H.264/AVC 帧内预测
u1s1,和265、266比起来,264的帧内预测真滴朴实无华在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的。对亮度像素而言,P块用于4x4子块或者16x16宏块的相关操作。4x4亮度子块有9种可选预测模式,独立预测每一个4×4亮度子块,适用于带有大量细节的图像编码;16×16 亮度块有4 种预测模式,预测整个16×16 亮度块,适用于平坦区域图像编码;色度块也有4 种预测模式,类似于16×16 亮度块预测模式。还有一种帧内编码模式称为I_PCM 编码模式。该模式下,编码器直接传输图像原创 2021-10-11 21:35:35 · 653 阅读 · 0 评论 -
H.264/AVC 片——slice
一帧视频可以编码成一个或多个片slice,每个slice包含有一个或多个宏块MB(最多时一个slice包含整帧的宏块)。设置slice的目的是为了限制误码的扩散和传输(怪不得搞编码速度/性能的paper大都不考虑多个slice,只考虑一帧只有一个slice,因为这些paper不会考虑出现误码的情况),使得每个slice之间是相互独立的,不能互相作为预测时的参考。slice的结构如下图所示:slice头用于确定slice的类型、slice的参考帧以及slice属于哪帧图像slice数据..原创 2021-10-11 20:57:59 · 1266 阅读 · 0 评论 -
H.264/AVC的编码格式
H.264具有良好的网络亲和性,可适用于各种传输网络H.264包含视频编码层(Video Coding Layer,VCL)和网络抽象层(Network Abstraction Layer,NAL)VCL数据就是编码的输出,它表示被压缩编码后的视频数据序列。在VCL数据传输或存储之前,这些编码的VCL数据先被映射或封装进NAL单元里。每个NAL单元包括一个原始字节序列负荷(RBSP)和一组对应于视频编码数据的NAL头信息,NAL的结构如下图所示:...原创 2021-10-11 19:57:15 · 867 阅读 · 0 评论 -
H.264/AVC的结构
H.264不是明确的规定一个编解码器如何shixian ,而是规定一个编码视频得到比特流的方法以及解码这个比特流还原视频的方法。下面展示出264的编码器和解码器大致结构编码器结构解码器结构不能说和265、266一模一样,只能说完全一样总的说一下编码顺序:拿到一个视频帧之后先将其切块,对每一个视频块进行帧内/帧间预测得到当前视频块的预测值P,这个P和当前视频块的原始值Fn相减得到预测残差Dn,把预测残差进行变换量化熵编码得到比特流。此外呢,在变换量化之后,还会反量化反变换得到.原创 2021-10-11 17:25:35 · 484 阅读 · 0 评论 -
看到H.264标准的第一眼
这个专栏主要是学一学H.264标准吧,可能学习过程里会有跟H.265、H.266的对比,毕竟目前更熟悉265和266。希望古早的264标准不要太奇怪。参考的资料就是:1. IAIN E. RICHARDSON主编的The H.264 Advanced Video Compression Standard2. 毕厚杰老师主编的《新一代视频压缩编码标准——H.264/AVC》多说一句我学习265的参考资料:1. 朱秀昌老师主编的《H.265/HEVC:视频编码新标准及其扩展》2. 万原创 2021-10-11 16:51:38 · 255 阅读 · 0 评论