视频编码的那些事

前言

 一段1080P,60帧的视频,一秒钟应该占多少空间?

  • 一帧像素为:1920×1080 ≈ 200万
  • 每个像素算3Byte
  • 一帧画面:200万 × 3 ÷ 1024 ÷ 1024 ≈ 5.7M
  • 理论上一秒60帧的视频:5.7M × 60 = 342MB

 实际上不可能这么大,为什么没有这么大就是视频压缩的功劳了!平时看的视频都是经过压缩的所以一秒钟视频才1~2MB,所以视频压缩才是真牛逼啊!

分辨率

在这里插入图片描述
 什么是分辨率:横向多少个像素X纵向多少个像素=分辨率

  • 4K:3840x2160
  • 2K:2560x1440
  • Full HD:1920x1080
  • HD:1280x720

1080p 和 1080i的区别

  • 1080p:p–Progressive Scanning:逐行扫描
  • 1080i:i–Interlace Scanning:隔行扫描

在这里插入图片描述
 显像管时代,CRT显示器的画面是通过显像管里面的电子枪一行一行的打过去的,这个就是逐行扫描。一开始这样做是没有问题的,直到电视台决定增加画面的清晰度,这样可以让观众看得更加舒服;但是这样问题就来了,增加清晰度的同时,通到观众家里的“水管”还是这么小–带宽就不够用了!那时的研发人员就想到了一个“馊主意”:我们把屏幕上方扫描到屏幕下方而获得的一个画面叫做一个“”,逐行扫一轮下来的场就是一帧完整的画面。他们把一帧画面分割成两个场来扫描但它们都是隔一行才扫描一次的,如下图:

在这里插入图片描述 先扫描奇数场再扫描偶数场,然后再把两个场的画面拼起来就得到了一个完整的画面了;这就是隔行扫描。隔行扫描相比逐行扫描带宽降低了一半,这样就可以在相同的带宽下获得更高的清晰度了,隔行扫描主要是电视节目。(渲染视频的时候容易搞错场序~~)

视频格式

在这里插入图片描述
 视频格式是由:封装格式 + 编码格式

常见的封装-编码格式表

封装编码格式
MP4H.264,H.265,MPEG-4 …
AVIH.264,AC-1,MPEG-2 …
MOVH.264,XVID,MPEG-2 …
WMVWMV,AC-1 …
WebMVP8,VP9 …
RM/RMVBRV,RM …
TS/PSH.264,MPEG-2,MPEG-4 …
MKV可以封装所有的视频编码格式

码率(bitrate)

在这里插入图片描述
视频速率,视频每秒所包含的数据量、信息量,码率直接影响到视频的大小。

H.264编码标准

压缩方法:

  • 帧内压缩
  • 帧间压缩

帧内压缩

压缩原理:把视频内的每一帧画面都压缩成 JPEG这类有损的图像格式,JPEG图像格式的对比如下:
在这里插入图片描述
 JPEG是最流行也是最讨巧(耍流氓)的图片压缩方法,它就是利用了我们人眼对于亮度(明度)非常的敏感,但是对于颜色比较麻木的这种特性,将图片里面的亮度信息尽量的保留下来,然后对颜色信息进行大幅度的压缩;尤其是画面中颜色比较复杂的部分。JPEG图像压缩的效率非常的高以至于在视频压缩的这个领域,光是把无损视频里面的每一帧都用JPEG压缩就缩小了90%的视频体积。
在这里插入图片描述## 帧间压缩

 但就是JPEG压缩的效率已经这么高了,对于视频来说还是远远不够!看的视频中如1080P 60帧的视频来说,其实只有几张关键的图片是“原生的JPEG图像”其他都是计算机通过算法脑补出来的如下:
在这里插入图片描述 意思就是说:我们只要记录关键的几帧画面再加上当中的画面变化的一些小细节,以及物体的运动轨迹就好了,根本就不需要记录中间的这些画面,这样就大大的减少了视频的占用空间,这就是帧间压缩的基本原理了。
在这里插入图片描述对应到H.264中就有了:I帧P帧B帧

I帧(关键帧) 和 P帧(预测帧)

在这里插入图片描述
 I帧是完整的关键帧,先把I帧分割成很多个8x8或者16x16像素的“宏块”如上图,然后对I帧和下一个帧里面每一个对应的“宏块”进行比较如下图,如果发现这前后两帧“宏块”是有关联性的、有规律可循的,可能有几个“宏块”是完全一样的或者说是细微的变了一下位置,那么就是说下一帧是可以通过预测得出来的如下下图,就可以把下一帧叫做P帧–预测帧,对于P帧里面没有变化的在编码的时候就可以直接写上照抄I帧就可以了。

在这里插入图片描述在这里插入图片描述对于前后没有变化的“宏块”直接照抄上一帧的
在这里插入图片描述 对于前后发生了变化的“宏块”就记录变化的信息:是否变了颜色?是否移动了位置?还是消失了?编码的时候把这些变化记录下来,解码的时候在预测回去这就是P帧。P帧相对于I帧可以节约一半以上的空间。
在这里插入图片描述

B帧(双向预测帧)

在这里插入图片描述
 B帧是在I帧和P帧的基础上再进行预测,而且B不仅参考前面的帧而且还参考后面的帧;B帧相比P帧能再节省一半以上的空间。

在这里插入图片描述 我们的视频就是由这些I帧、B帧和P帧组合起来的,这就是为什么一部视频一秒钟理论上明明占用300多M的空间,但实际上十分钟都不一定要占300M的空间,这就是视频编码的魅力!

问题

 但是这样的编码方式也会带来问题,当视频里面加入很多五颜六色的特效或者复杂的动态场景,这时视频的信息量就太大了,小码率就根本塞不下,其次电脑也根本没办法预测下一帧那些五颜六色的像素会走到哪里,这种情况下,就需要更高的画质预设和可变码率来进行编码。

关于H.264的一些基本知识

GOP

 GOP (Group of Picture):每一组IPB帧序列包含了多少帧,即一个I帧之后要经过多少帧才会出现下一个I帧如下图,同码率下,GOP值越大,B帧与P帧越多,视频质量就越高。

在这里插入图片描述## 三个控制码率的参数:CBR(固定码率)、VBR(可变码率)、CRF(固定质量)

参数
CBR文件大小可预期编码压力小,直播常用空间利用率最低的一种方法
VBR码率可变,按需分配简单场景码率低,复杂场景码率高,还可以选择渲染两遍来提高视频质量空间利用率最低的一种方法
CRF固定质量模式CRF值越低,视频看起来质量越高,反之亦然以观感画质为目标码率、文件大小不可预期

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值