视频编解码
文章平均质量分 70
houxiaoni01
这个作者很懒,什么都没留下…
展开
-
TS流分析
一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video、Audio以及我们需要学习的PAT、PMT等信息。因此,我们首先需要了解TS流是什么,以及TS...转载 2018-03-02 11:32:12 · 606 阅读 · 0 评论 -
HEVC学习
HEVC_CJL的专栏原创 2021-08-24 13:36:55 · 285 阅读 · 0 评论 -
视频编码器评测
视频编码器评测转载自:http://blog.csdn.net/leixiaohua1020/article/details/46754977视频编码器领域一直有个比较复杂的问题:mpeg2、divx、xvid、mpeg4、vp8、vp9、x264、openh264、x265等等这一系列编码器到底哪个好?而对于同一种视频编码器,又包括了各种各样的参数配置,这些配置对视频编码器的影响又是怎样转载 2018-01-08 13:35:39 · 976 阅读 · 0 评论 -
各种音视频编解码学习详解
https://www.cnblogs.com/skyofbitbit/p/3651270.html编解码学习笔记(一):基本概念编解码学习笔记(二):codec类型编解码学习笔记(三):Mpeg系列——Mpeg 1和Mpeg 2编解码学习笔记(四):Mpeg系列——Mpeg 4编解码学习笔记(五):Mpeg系列——AAC音频编解码学习笔记(六):H.26x系列编解码学习笔记(七)...转载 2019-09-03 10:54:44 · 610 阅读 · 0 评论 -
视频编解码学习
《视频编解码学习之一:理论基础》《视频编解码学习之二:编解码框架》《视频编解码学习之三:变换,量化与熵编码》《视频编解码学习之四:视频处理及编码标准》《视频编解码学习之五:差错控制及传输》...转载 2019-09-03 16:36:29 · 527 阅读 · 0 评论 -
常见视频编码格式解析
常见视频编码格式解析常见视频编码格式解析1.MPEG2-TS编码技术1.1.MPEG-TS简介1.2.基本概念及TS流概述1.3.基本流程1.4.TS流传输包(简称TS包)结构分析1.4.1.TS包包头1.4.2.TS包净荷部分1.5.PS节目流2.MPEG-4编码技术2.1.MPEG-4概述2.2.MPEG-4各部分2.3.MPEG-4层次结构3.H...原创 2017-12-15 14:12:56 · 42835 阅读 · 3 评论 -
【从零实现一个H.264码流解析器】(六):解析片头部Slice_Header的句法元素
在之前我们已经解析出码流文件中的前两个NALU,分别为SPS和PPS,下面我们就开始解析第三个NALU。在【最简单的H264编解码器】里已经说过,我们接下来会首先按照最简的方式来考虑问题,因此接下来我们遇到的都是I_Slice。解析Slice总的来说分成两大块,第一步先解析Slice_Header,然后解析Slice_Data。解析Slice_Header较为简单,而解析Slice_Data则至...转载 2019-08-22 16:01:27 · 2573 阅读 · 0 评论 -
【从零实现一个H.264码流解析器】(五):解析图像参数集PPS的句法元素
前面我们解析了序列参数集SPS,它也是第一个出现的NALU中包含的内容。下面我们开始解析第二个NALU,由上篇生成的trace文件也可以看到,它的nalu->nal_unit_type等于8,为图像参数集PPS。有了解析SPS的铺垫,解析PPS就轻松自然多了。解析PPS同SPS一样,同样分为两大步:(1)数据存放:定义与h264文档相匹配的PPS的数据结构,在这里我们依然选用结构体(...转载 2019-08-22 15:42:31 · 619 阅读 · 0 评论 -
【从零实现一个H.264码流解析器】(四):生成句法元素跟踪trace文件
在上篇中,我们已经解析出SPS的全部句法元素,但是有一个至关重要的问题是,我们不知道自己解析出的句法元素值是否正确!为了严格保证我们每一步都是正确的,和防止我们在错误的道路上越走越远,我们这里仿造H264官方参考软件JM,也建立一套trace机制。并且因为我们解析SPS句法元素时,是参照最新版H264协议文档,也即2017-04版来解析的。因此我们需要保证,我们自己写的这个码流解析器,要和JM...转载 2019-08-22 14:45:42 · 630 阅读 · 0 评论 -
【从零实现一个H.264码流解析器】(三):解析序列参数集SPS的句法元素
上篇中我们实现了初步解析NALU的步骤,下面我们开始依次解析码流中出现的NALU。最开始出现的就是序列参数集SPS,通过上篇解析nalu_header我们也能看到,第一个NALU的nalu->nal_unit_type等于7,因此我们先解析它。解析SPS的步骤分为两大类:(1)数据存放:定义与h264文档相匹配的SPS的语法结构,在c语言中我们常用的就是结构体(2)解析实现:从nal...转载 2019-08-22 14:28:01 · 1391 阅读 · 0 评论 -
【从零实现一个H.264码流解析器】(二):导入指数哥伦布解码实现并初步解析NALU
上一篇中我们已经找到nalu,这一篇开始,我们就逐步搭建解析nalu的框架,在本篇中,核心任务有以下几个:1、实现nal_to_rbsp,也即从nalu中提取出rbsp2、实现rbsp_to_sodb,也即从rbsp中找到trailing_bits3、导入在【h264/avc句法和语义详解】系列中,已经实现的指数哥伦布解码部分内容很简单,为了显得更专业,我们先将上次的项目稍作改变:(...转载 2019-08-22 13:59:36 · 1060 阅读 · 0 评论 -
【从零实现一个H.264码流解析器】(一):从码流中找到NALU
1、本系列的目的这个系列是为了配合【H.264/AVC 句法和语义】来写的,通俗点来讲,【句法和语义】和【解析器】这两个系列,前者相当于理论研究,后者相当于工程实践。而且【解析器】这个系列,是一步一步跟着【句法和语义】的脚步来走的。这样我们就可以一边学习理论,一边实际操作,二者结合,既能达到复习巩固的效果,又能增强项目能力。2、为何名称叫“解析器”而不叫“解码器”系列名称之所以取【解析器】,...转载 2019-08-22 10:53:21 · 2161 阅读 · 1 评论 -
【H.264/AVC 句法和语义详解】(十二):H264中的帧场编码模式详解
上篇中,我们已经解析出了Slice_Header的句法元素,下面我们就可以根据前面已经解析出的SPS、PPS、Slice_Header的句法元素,来做一些准备性的工作。我们首先要做的,就是要确定当前Slice所采用的编码方式,即当前Slice进行的是帧编码还是场编码,如果是帧编码,又是不是宏块级的帧场自适应?如果是场编码,那么当前Slice是作为顶场,还是底场?为了要彻底弄清楚这些问题,我们先...转载 2019-08-21 16:03:13 · 3535 阅读 · 0 评论 -
【H.264/AVC 句法和语义详解】(十一):Slice_Header的句法和语义
前面我们根据SPS和PPS的句法和语义,已经能够解析出h264码流文件中的前两个NALU。现在我们就开始解析第三个NALU,它同码流中的后面几个NALU一样,它们的nal_unit_type不是等于5,就是等于1。因此它们不是IDR的slice,就是非IDR的slice,总之后面的几个NALU,都代表了片层的数据。而它们的句法元素,都包含在slice_layer_without_partitio...转载 2019-08-21 15:51:44 · 1734 阅读 · 0 评论 -
【H.264/AVC 句法和语义详解】(十):最简单的H264编解码器
本篇源出的目的,是因为我们到目前为止,并没有达成一个默契。那就是我们接下来学习H264句法和语义的宗旨,是从简单到复杂,这里的简单就是最简单。意思是我们先在最简单的情况下,来看看怎么做出一个H264编解码器,然后逐步放开条件,去研究更复杂的功能。之所以此时写出这么一篇,是因为我们接下来,会遇到很多看似错综复杂的句法元素,因为H264本身,就是一个错综复杂的整体。因此我们要学会将复杂的问题,以简单...转载 2019-08-21 15:44:05 · 985 阅读 · 0 评论 -
【H.264/AVC 句法和语义详解】(九):图像参数集PPS句法和语义
同序列参数集SPS一样,图像参数集PPS在解码的过程中,也将起到至关重要的作用。我们已经知道,在h264的句法元素分层结构上,由片引用PPS,PPS再引用SPS,从而得到解码所需的全部句法元素。PPS同SPS一样,也是从一段视频序列的基础上,抽取出大部分公共编解码信息,从而形成的SPS和PPS。因此呢,我们接下来就会感受到,PPS里的句法元素的语义,也是作用在视频序列上的。因为SPS和PPS是...转载 2019-08-20 14:50:32 · 833 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(八):序列参数集SPS句法和语义
在本系列第一篇我们就知道,在h264码流的句法元素中,序列参数集SPS(seq_parameter_set)可由多个图像参数集PPS(pic_parameter_set)引用,然后PPS再由多个片引用。在形式上,SPS统领了一段视频序列的编码信息,如果SPS在传输中丢失或损坏,可以说这段视频序列,也就无法进行接下来的解码操作。因此类型为SPS的NALU,在h264码流的众多NALU中,一般位于第...转载 2019-08-20 14:49:11 · 1430 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(七):C语言实现Exp-Golomb指数哥伦布编码(解码篇)
看过编码篇,再看这篇就容易多了。不需多言,解码是编码的逆过程,以code_num = 5为例,我们将5通过指数哥伦布编码,编码为00110,然后再通过解码过程,将00110解码为5,这一过程也是描述子ue(v)干的事情。同时,因为h264码流的解析,也是我们学习H.264/AVC 句法和语义所采取的路线。所以这篇文章就显得极其重要,学习了ue(v)、se(v)、te(v)的解码过程,再加上顺序...转载 2019-08-20 14:48:02 · 522 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(六):C语言实现Exp-Golomb指数哥伦布编码(编码篇)
上篇中我们介绍了Exp-Golomb的理论部分,这一篇我们就使用C语言来实现它。我们已经知道,在H.264中,指数哥伦布编码有四个描述子,分别为ue(v)、se(v)、me(v)、te(v)。其中me(v)是最简单的,它直接靠查表来实现。而剩余的se(v)和te(v),是在ue(v)的基础上来实现的。所以它们的利害关系不明而喻,ue(v)就代表了指数哥伦布编码。下面我们就先重点介绍,无符号指数...转载 2019-08-20 14:46:33 · 546 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(五):Exp-Golomb指数哥伦布编码(理论篇)
上篇我们说过,学习描述子是解析h264句法元素的第一步。而在描述子中,除了顺序读取若干比特的b(8)、f(n)、i(n)、u(n),指数哥伦布编码也是使用频率很高的编解码方法。因为指数哥伦布编码(Exponential-Golomb)属于熵编码(Entropy encoding),所以我们先大致介绍一下熵编码,然后再进行细化。1. 熵编码(Entropy encoding)熵(shang)编...转载 2019-08-20 14:44:43 · 686 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(四):通过学习"描述子"实现码流解析的第一步
在这篇文章中,我们会涉及三个非常重要的问题:1、如何获取一条主线和多条辅线,来学习h264解码器2、为什么描述子,是正确打开码流解析的第一步3、学习描述子在前面几篇中,我们对h264的码流结构有了初步的了解。但是这还远远不够,因为我们的目标,是通过学习h264的解码流程,去探索h264里面的每个知识点。所以在这个时候,让读者明白我们现在身处的位置,是一件至关重要的事情。因为只有这样,我们才...转载 2019-08-20 14:42:32 · 552 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(三):NALU详解二(EBSP、RBSP与SODB)
上一篇解析到,我们从h264裸流中,提取出一个个的NALU,并且解析出NALU的第一个字节:NALU Header。下面我们就从NALU Header的下一个字节开始,分析NALU剩余的数据部分,也即NALU的主体部分。NALU的主体涉及到三个重要的名词,分别为EBSP、RBSP和SODB。其中EBSP完全等价于NALU主体,而且它们三个的结构关系为:EBSP包含RBSP,RBSP包含SODB。...转载 2019-08-20 14:38:27 · 754 阅读 · 2 评论 -
【H.264/AVC 句法和语义详解】(二):h264码流格式与NALU详解一
细节详见:《常见视频编码格式解析》上一篇中,我们站在句法元素(或称语法元素)的角度,介绍了H.264的句法和语义,和句法元素的分层结构。在这篇中,我们更进一步,从比特的角度出发,来探索h264码流的组成。通过这篇的学习,我们会初步具备解析h264码流的能力,从码流中分离出NAL单元,并识别NAL类型。1、h264码流格式不过大道始于脚下,我们还是先从头介绍一下,h264的两种码流格式,它们分...转载 2019-08-20 14:34:39 · 1011 阅读 · 0 评论 -
【H264/AVC 句法和语义详解】(一):句法元素分层结构
H264句法元素分层结构原创 2019-08-20 14:32:43 · 1426 阅读 · 1 评论 -
H.264/AVC 的各大主流编解码器
在这篇文章里,我们将介绍在H.264编解码标准的基础上,实现的各主流编解码器。我们前面曾多次提到,H.264只是一个编解码的标准协议,它同MPEG-1和MPEG-2一样,协议里并没有规定编解码器的具体结构和实现方法。但是要求生成的数据流的结构,必须符合协议的规定,在这里也就是生成符合H.264标准的数据流。这时我们可以称这种数据流格式为H.264格式,它可以保存在本地的文本文件中,也可以传输在传...转载 2019-08-20 14:30:14 · 3360 阅读 · 0 评论 -
H.264/AVC 帧间预测
在早前介绍MPEG-2的时候,就介绍过帧间预测,它是从过去编码后重构的相邻帧(参考帧)的样本,预测当前帧(待编码帧)样本的过程。这一过程分为三个步骤:(1)在参考帧中,找出与待编码帧图块的最佳匹配块,所谓最佳匹配块,即这两个图块的差值最小。在数学上,通常用图块中样本值差值的绝对值,也即AE(absolute difference)来表示,进一步也可用SAE,也即绝对值误差之和来表示。在查找最佳匹...转载 2019-08-20 14:28:20 · 738 阅读 · 0 评论 -
H.264/AVC 三种配置和帧内预测
上篇讲了H.264中的宏块、片和帧,以及它们之间的关系。这篇我们介绍一下H.264所使用的帧内预测,就像上篇中介绍的,帧内预测是H.264的一大特点,并且它和帧内编码的区别,我们上文中也已经讲到。与前面几篇所述的内容一样,了解H.264的帧内预测,同样也是为了理解H.264的句法和语义打基础,也对理解各H.264的编解码器大有帮助。1、H.264/AVC的三种配置在开始讲帧内预测之前,我们先补...转载 2019-08-20 14:21:47 · 1358 阅读 · 0 评论 -
H.264/AVC 中的宏块、片、帧
上篇文章最后,因为编辑的原因,有一点没有补充。就是最后给出的维基百科的FMO彩图,其中的Type 0 并不是规则0中的交错片组,而是不使用FMO情况下的,标准的H.264像片,而Type 1 至Type 5依次对应规则1 至 规则5。这篇文章中,我们继续接着H264画面划分开始,介绍它的像片类型。希望读者通过这一篇文章,能够对理解H.264的编解码原理打下基础,了解H.264的基本编码单元,以及...转载 2019-08-20 14:12:01 · 1785 阅读 · 1 评论 -
H.264/AVC 的分层结构与画面划分
上篇我们对H.264/AVC做了简单的介绍,尤其是它的主要改进方面。在接下来的几篇中,我们会由浅入深,一步一步来探索H.264。在讲解顺序方面,我参考了毕厚杰的《新一代视频压缩编码标准》。先从H.264标准的编码方法入手,这包括它的分层结构、画面划分、帧内和帧间编码方式、整数变换和量化、CAVLC和CABAC,然后再从H.264码流的角度,来分析它的句法和语义。当然这里并不会全部介绍,毕竟不是写...转载 2019-08-20 14:05:28 · 1223 阅读 · 0 评论 -
H.264/AVC简介
从这一篇开始,我们将介绍H.264/AVC。在前几篇里,我们分别介绍了MPEG-1和MPEG-2,按照顺序考虑下来,我们该会疑问,接下来不应该是MPEG-3嘛?没错,事实上MPEG-3确实有,它是在MPEG-2之后,制定的应用在HDTV上的音视频标准。但是由于MPEG-2大获成功,已经可以满足需求,所以MPEG-3就被融合进了MPEG-2。那我们又该有疑问了,那接下来也不应该是H.264/AVC...转载 2019-08-20 13:57:06 · 9323 阅读 · 0 评论 -
MPEG-2 数据位流与视像质量可变编码
这一篇做一些MPEG-2的收尾工作,所以对比上一篇来讲,相对比较轻松一点。上篇着重讲了MPEG-2的编码器部分,而下面我们就从MPEG-2的解码器部分开始,简单介绍一下。1、MPEG-2解码器MPEG-2 解码器类似编码器一样,解码器该有的部分都有,只不过都是跟编码部分逆着来的。比如从最右侧视像数据的输入,经过缓存,VLD,IQ,IDCT,如果是预测图像则会得到预测误差,而后预测误差,与参...转载 2019-08-20 13:51:49 · 585 阅读 · 0 评论 -
MPEG-2
MPEG-2听名称,就比MPEG-1牛逼了很多。MPEG-2是MPEG专家组,从1990年就开始研究,并于94年完成的第二个视音频编码标准。相比于MPEG-1而言,它不仅继承了MPEG-1,而且在它的基础上,扩展了许多MPEG-1没有的功能,比如支持高分辨率的视像、大范围的数据速率、多声道的环绕声、多种视像分辨率、位速率不变、隔行扫描。可以看到,新增的这几个功能,大致是在三个方面来提高:1、视...转载 2019-08-20 11:52:48 · 5838 阅读 · 0 评论 -
MPEG-1中I、B、P帧的基本编码原理
在上篇文章中,我们对MPEG-1有了一个轮廓性的介绍,知道视像序列中的图像类型有三种,分别为I帧、P帧、和B帧。但是我们并没有更深入的去了解,编码这三种类型的图像数据时所采用的不同方式,只知道它们都是把图像分为以16x16像素的宏块、8x8像素的图块为基本单元进行处理的。而实际上,编码I、P、B三种类型的图像数据的方式并不相同,不过在进一步展开之前,我们先来讲讲为什么要在这个时候讲这个。我们都知...转载 2019-08-20 11:45:12 · 5075 阅读 · 0 评论 -
MPEG-1
看完这篇文章,你将会学习到:什么是MPEG?MPEG-X和H.26X、MPEG-1编解码标准从这篇文章开始,我们逐一介绍音视频编解码的几个重要国际标准,这几个标准分别为MPEG-1、MPEG-2、MPEG-4、H.264/AVC、H.265/HEVC。我想即使没做过音视频编解码的人,也或多或少听说过这几个名词。在接下来的几篇文章里,我们不会深入的去探讨技术细节,比如编解码图像数据时使用的各类...转载 2019-08-20 11:40:27 · 7096 阅读 · 0 评论 -
在MPEG之前
看完这篇文章,你将会学习到:为什么要压缩图像数据、图像数据为什么能压缩讲到这里,我们已经来到了这个系列文章的一个转折点。因为从这篇文章开始,我们开始介绍视频数据的编解码技术,这也是这个系列的其中一个目标。在介绍MPEG之前,我们先来对接一下前面的内容,找到一个起承转合的衔接点,也方便找到学习路径,形成知识体系。我们在讲YUV和YCbCr的时候,曾分析过电视系统中,颜色空间的转换。如下图:...转载 2019-08-20 11:31:25 · 519 阅读 · 0 评论