ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FFmpeg笔记(四)

2021-03-17 22:33:41  阅读:266  来源: 互联网

标签:编码 MPEG FFmpeg 视频 笔记 H.264 frames AVC


初步了解视频的编码格式

视频编码格式-H.261

H.261是1990年ITU-T定制的一个视频编码标准,属于视频编解码器,视频编码器的鼻祖
H.261又称为P*64,其目是为了能在64kbps的带宽上传输质量可接受的视频信号,
编码程序设计的码率是能够在40kbps到2Mbps之间工作
对CIF和QCIF分辨率的视频进行编解码(即亮度分辨率分别是352x288和176x144,色度采用4:2:0采样,分辨率分别是176x144和88x72), 它们是一种国际化的标准图像格式,不同硬件之间共同约定的统一格式

H.261的实现原理

  1. 使用帧间预测来消除荣誉,使用了大量的矢量运动来进行运动补偿:分析相似图片的规律,将它们不变的地方保留下来,变动的地方按照位移编码规律的出一个计算方式,并根据这个计算规在解码的时候则自动生成中间帧(由于是可以计算出来的,所以中间帧被丢掉)
  2. 变换编码部分使用了一个8x8的离散余弦变换来消除空域的冗余:
  3. 然后对变换后的系数进行阶梯量化
  4. 再对变换系数进行Zig-zag(模式填充矩阵,安某种规则对矩阵进行数据填充)扫描并进行熵编码来消除冗余的统计(编码过程中按熵原理不丢失任何信息的编码。)

视频编码格式-H.264

H.264目前的应用最广泛的的视频编码格式,是由视频编码专家组和动态图像专家组提出的视频解码器标准,名字有很多,如H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC`

国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC)的第10 部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。

H.264编解码流程

  1. 帧间和帧内预测(Estimation)
  2. 变换(Transform)和反变换
  3. 量化和反量化
  4. 环路滤波
  5. 熵编码

H.264的优势

  1. 编码效率高: 同H.263等标准的特率效率相比,节省约一半的时间。
  2. 高质量的视频画面: 能够在较低的带宽传送高质量的图像
  3. 网络适应能力强: 可以在低延迟和无延迟的的场景下工作,不同的环境不同的传输和播放熟虑,提供丰富的错误处理工具,很好的控制或消除丢包和误码
  4. 采用混合编码个够: 使用了DCT+DPCM的编码个够,此外还增加了运动估计,帧内预测,多帧预测,基于内容的变长编码,4*4二维整数变换等新的编码方式
  5. 编码选项少,降低了编码时开发的复杂的度
  6. 较高的计算复杂度,相比H.263计算更为复杂

编码方式

  1. 帧内预测编码: 利用相邻宏块的空间相关性(相似属性),预测剩余位置的属性进行压缩编码,为了满足不同场景,宏快和取点数以及取点方向各有差异,有4*4,8*8,16*16的宏块划分, 这种压缩类似于JPEG压缩,在图片色彩越统一,压缩效果越好,压缩后的这帧叫做I帧(I-frame).
  2. 帧间预测编码: 帧间预测编码利用连续帧中的冗余来进行运动估计和补偿, 总而言之,就是各种找规律,统计分析,将相似部分去掉,可推导有规律部分记录差值计算规则,完全不相似部分则全部记录。 帧间压缩后,很多帧会被组成一组图片(GOP,group of pictures)
  3. 去块滤波器:自适应去除块效应的滤波器,人们无法识别的信号先去除掉
  4. 整数变换: 基于4×4像素块的类似于DCT的变换,有减少运算量和复杂度,有利于向定点DSP移植的优点
  5. 量化:可选52种不同的量化步长
  6. 熵编码: 采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。

H.264-GOP

上面提到在帧间编码后,会压缩生成一组图片(GOP),GOP中主要保留有三种不同的帧.

1.I-frame,关键帧,独立帧,尺寸最大,也是压缩最快的;

  1. P-frames: 预测帧,基于I-framesP-frames的可预测的图片进行编码得到的,P-frames可以引用最近预测的P-frames或一组I-frames;
  2. B-frames,双向帧,基于使用之前和之后的帧信息进行编码后得到的帧。几乎不需要存储空间,但其解码过程会耗费很长时间,因为它依赖于周围其他的帧.

H.264-视图编码

  1. Baseline: 支持I/P 帧,只支持无交错和CAVLC,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等;
  2. Main:提供I/P/B 帧,支持无交错和交错,提供对于CAVLC 和CABAC 的支持,用于主流消费类电子产品规格如低解码的mp4、便携的视频播放器、PSP和Ipod等。
  3. High:在Main的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4)用于广播及视频碟片存储(蓝光影片),高清电视的应用。

参考文章

百度百科

标签:编码,MPEG,FFmpeg,视频,笔记,H.264,frames,AVC
来源: https://www.cnblogs.com/wwoo/p/ffmpeg-bi-ji-si.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有