H.264
文章平均质量分 75
Spark!
路人
展开
-
H264——H264码流分析实例(SPS、PPS)
目录工具原理NALUSPSPPS实例视频二进制数据SPS分析nal_headerprofile_idclevel_idcseq_parameter_set_idchroma_format_idcresidual_colour_transform_flagbit_depth_luma_minus8bit_depth_chroma_minus8qpprime_y_zero_transform_bypass_flagseq_scaling_matrix_present_flaglog2_max_frame_num原创 2021-08-07 18:47:20 · 5323 阅读 · 0 评论 -
H264——H264的CAVLC和CABAC
CAVLC和CABAC简介H.264基本介绍熵编码压缩是一种无损压缩,其实现原理是使用新的编码来表示输入的数据,从而达到压缩的效果。常用的熵编码有游程编码,哈夫曼编码和CAVLC编码等。(1)CAVLCCAVLC(Context Adaptive VariableLength Coding)是在H.264/MPEG-4AVC中使用的熵编码方式。在H.264中,CAVLC以zig-zag顺序用于对变换后的残差块进行编码。CAVLC是CABAC的替代品,虽然其压缩效率不如CABAC,但CAVLC实现简原创 2021-08-06 20:51:13 · 1797 阅读 · 0 评论 -
H264标准完全教程(未完)
目录了解基础知识H264的基本介绍基本概念了解音视频包括的内容主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))由于目前最常用的是H264,所以这里先给出相关教程基础知识视频编码都要考虑以下三个问题压缩比算法复杂度还原度压缩分硬件压缩和软件压缩软件压缩用CPU进行数学运算,效率非常低,cpu不是很擅长数学运算,软件压缩只用于非专业的情况下。有时,硬件资源不够,才考虑裁剪移植ffmpeg进行软件辅助压缩硬件压缩常用的压缩方法,通过d原创 2021-08-05 17:44:50 · 1279 阅读 · 1 评论 -
H264——H264中的宏块(macroblock)、片(slice)、帧(frame)
这里写自定义目录标题前言宏块(macroblock)宏块种类片(slice)slice组帧(frame)序列前言若干个块组成宏块若干个宏块组成条带若干个条带组成一帧若干帧组成一段视频宏块(macroblock)H264中,以16x16的宏块为编码最小单元,一个宏块可以被分成多个4x4或8x8的块当然,像素块越小,编码的复杂度也会随之增加,编码效率自然就会降低。但是这样是值得的,因为图像的压缩效率有了显著提高,也就是编码后得到的相同质量的图像,H.264的压缩比更大,占用的空间及带宽原创 2021-08-05 15:57:48 · 5302 阅读 · 0 评论 -
H264——H264的压缩方法简介
这里写自定义目录标题1.分组2.定义帧3.预测帧4.数据传输有损无损压缩帧类型1.分组把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多。2.定义帧将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;3.预测帧以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;4.数据传输最后将I帧数据与预测的差值信息进行存储和传输。帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧原创 2021-08-05 14:48:31 · 2061 阅读 · 0 评论 -
H.264——量化参数QP和量化步长Qstep
目录什么是QP和QstepQP与Qsetp对应图QP的调节效果量化min qp 最小量化步长max qp最大量化步长什么是QP和Qstep量化参数QP是量化步长Qstep的序号。对于亮度(Luma)编码而言,量化步长Qstep共有52个值,QP取值0-51对于色度(Chroma)编码,Q的取值0-39。QP与Qsetp对应图QP的调节效果QP取最小值0 时,表示量化最精细相反,QP取最大值51时,表示量化是最粗糙的。QP和Qstep具有线性相关性Qstep随着QP的增加而增原创 2021-07-19 13:21:19 · 4743 阅读 · 2 评论 -
音视频中的码率控制(CBR、VBR、CVBR、FIXQP)
什么是码率?码率就是数据传输时单位时间传送的数据位数。一般我们用的单位是kbps即千位每秒。通俗一点理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。码率控制器实现对编码码率进行控制。为什么要控制码率?从信息学的角度分析,图像的压缩比越低,压缩图像的质量越高;图像压缩比例越高,压缩图像的质量越低。对于场景变化的真实场景,图像质量稳定,编码码率会波动;编码码率稳定,图原创 2021-07-19 11:29:41 · 10175 阅读 · 2 评论 -
视频编解码——C语言实现霍夫曼编码
#include <stdio.h>#include <stdlib.h>#include <string.h>//#include <iostream> #define MAXBIT 100#define MAXVALUE 10000#define MAXLEAF 30#define MAXNODE MAXLEAF*2 -1 typedef struct { int bit[MAXBIT]; i原创 2021-06-03 09:24:37 · 806 阅读 · 0 评论 -
视频编解码——实现指数哥伦布解码
// ExpColum.cpp#include <assert.h>#include <stdio.h>typedef unsigned char UINT8;static int get_bit_at_position(UINT8 *buf, UINT8 &bytePotion, UINT8 &bitPosition){ UINT8 mask = 0, val = 0; mask = 1 << (7 - bitPosition);原创 2021-06-02 14:55:40 · 156 阅读 · 0 评论 -
视频编解码——指数哥伦布编码的原理与分类
目录指数哥伦布编码与霍夫曼编码对比指数哥伦布编码的分类ue(v)—0阶无符号指数哥伦布编码指数哥伦布编码与霍夫曼编码对比相同点:指数哥伦布编码同哈夫曼编码一样,都属于变长编码的一种即,针对不同的码原,每个码字的长度也是不一样的(唯一共同点)不同点:信源相关性:哈夫曼编码依赖于信源的概率分布,对于不同信源,构建出的霍夫曼码表是不同的;指数哥伦布编码与信源无关,所有信源的编码规则都是一致的额外信息:哈夫曼编码的数据必须额外携带与该信源匹配的码表;指数哥伦布编码无须携带任何额外信息(与上一条相原创 2021-05-28 15:34:44 · 1339 阅读 · 0 评论 -
H.264——H.264中定义符号解析方法与支持的熵编码算法
目录前言H.264中的熵编码基本方法前言由于种种原因,哈夫曼编码并没有作为一种实际使用的技术应用到视频编解码算法中。H.264实际使用到的熵编码算法,其中最简单的一种就叫:指数哥伦布编码。H.264中的熵编码基本方法熵编码具有消除数据之间统计冗余的功能,在编码端作为最后一道工具,将语法元素写入输出码流。熵解码作为解码过程的第一步,将码流解析出语法元素供后续步骤重建图像使用h264中,针对不同语法元素定义了不同的熵编码方法在h264协议文档中,一共制定了10种语法元素的描述符,原创 2021-05-27 14:51:00 · 238 阅读 · 0 评论 -
视频编解码——霍夫曼编码的实现
目录原理分析代码实现输入文件.c原理视频编解码——熵编码—哈夫曼编码的原理及实现分析首先制作一个输入文件,文件中包含很多字符。程序以输入文件中字符出现的评论不同作为huffman树生成的依据统计字符出现的概率。此处有两个熟悉,字符名和出现次数,可以使用结构体进行设计构建huffuman树存储huffuman码表和编码后的文件难点主要是所有字符的排序生成huffuman树及码字的分配统计完字符的出现次数后,需要对其进行先后顺序的排列。如果使用的是c++,就可以用c++的stl提供的数据结原创 2021-05-27 14:16:53 · 571 阅读 · 1 评论 -
视频编解码——熵编码的概念
这里写自定义目录标题熵的概念熵与混乱程度熵编码的思想常用熵编码算法熵的概念熵:热力学与化学概念,用于度量能量退化的指标熵越高,物体/系统做功的能力越低后来信息论的奠基人香农讲化学与热力学 中熵的概念引入到了信息学信息学中的熵:用于度量消息的平均信息量,和信息的不确定性越是随机的、前后不相关的信息,其熵越高信息论中香农提出了信源编码定理:说明了香农熵与信源符号概率之间的关系信息的熵为信源无损编码后平均码长的下限(任何无损编码方式都不可能使编码过后每个码原的平均码长小于香农熵,原创 2021-05-19 08:53:54 · 469 阅读 · 0 评论 -
H.264——解析NAL Unit数据
目录原理分析代码实现原理视频编解码——NAL Unit结构分析分析1、首先去掉起始码得到NALU实际数据2、分离出NALU中一个字节的header1bit禁止位、2bitNRI、5bitTYPE3、解析剩余NALU的body部分EBSP去除03->RBSP代码实现...原创 2021-05-18 19:31:19 · 484 阅读 · 0 评论 -
H.264——NAL Unit结构分析
目录NAL Unit格式NAL Headernal_unit_typeNAL BodyExtended Byte String PayloadRBSP和SODB**问:RBSP是不是等同于原始语法元素值本身?**SODB:String Of Data BitsNAL Unit格式这一部分在h.264标准文档的7.3节。解释部分在h264标准文档的7.4.1节NAL Header +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+原创 2021-05-07 16:56:47 · 2243 阅读 · 1 评论 -
H.264——从码流中提取NAL Unit的有效数据
从NALU去除起始码提取数据原创 2021-05-07 14:32:58 · 658 阅读 · 0 评论 -
H.264——H.264码流封装格式:流格式与包格式
目录H.264的码流封装格式NAL Unit字节流格式H.264的码流封装格式在H.264语法元素进行编码之后,生成的输出数据都封装为NALU(nal unit)进行传递。多个NALU组合在一起就形成了输出码流对于不同的应用场景,NALU规定了一种通用的格式来适应不同类型的传输封装类型,一般分为两大类:Annex-B字节流格式大部分编码器的默认输出格式每个NAL Unit以规定格式的起始码分割起始码:0x 00 00 00 01 或 0x 00 00 01RT原创 2021-05-06 09:09:55 · 1575 阅读 · 0 评论 -
H.264——使用H.264视频编解码器JM进行YUV图像序列的编解码
目录常见H.264视频编码器常见H.264视频编码器X264(只有编码没有解码)是由Video LAN组织制作的,这个组织还制作了一款著名的开源媒体播放器VLCJM的参考代码托管在hhi组织(德国的研究机构),我们可以在这个机构中获取JM最新的源代码。最近经典的版本是JM8.6,虽然没有包含最新的内容,但在开始阶段以及足够我们进行学习...原创 2021-04-28 21:19:50 · 4105 阅读 · 6 评论 -
H.264——H.264的基本介绍
目录背景与基本概念特点H.264的应用场景编码整体架构编码结构H.264对一个宏块编码H.264标准采用的编码工具帧内预测帧间预测MV的亚像素差值整数变换与量化无损熵编码其他技术本文是对H.264编码标准研究系列的开端背景与基本概念发起者:ITU-T的VCEG(Video Coding Experts Group)发起时间:2003最初版本支持8bit/sample,4:2:0色度采样,主要针对大部分通用视频处理与传输场合,(#`O′)对特殊应用做处理特殊应用可能需求:源视频数据精度原创 2021-04-28 14:54:57 · 3320 阅读 · 0 评论 -
视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))
目录制定标准的组织两种编码方式基于波形的编码基于内容的编码H.261系统图信源编码器复合编码器H.263MPEG-1码流结构MPEG-2码流结构MPEG-4制定标准的组织这些标准主要由两个组织制定。国际电信联盟——ITU-T国际标准化组织——ISO目前世界上影响力最强的视频编码标准基本都出自于这两个组织。除了这两个组织,还有Google——VP8/VP9Microsoft——VC-1国产自主标准——AVS/AVS+/AVS2两种编码方式基于波形的编码特点编码的数据正对每原创 2021-04-28 09:50:41 · 3182 阅读 · 0 评论 -
H.264——H.264的profile 和 level
目录简介AVC的三种规格从低到高分别为:Baseline、Main、High。BP、EP、MP、HPCAVLC和CABAC简介H.264 Profile、Level、Encoder关系图简介首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的,ITU-T给这个标准命名为H.264(以前叫做H.26L),而ISO/IEC称它为MPEG-4 高级视频编码(Advanced Video Coding,AVC)它定位于原创 2021-07-19 10:43:36 · 3496 阅读 · 0 评论