1、引言
从 20 世纪 90 年代以来,数字音视频编解码技术迅速发展,一直是国内外研究的热点领域。随着5G的成熟和广泛商用,带宽已经越来越高,传输音视频变得更加容易。视频直播、视频聊天,已经完全融入了每个人的生活。
视频为何如此普及呢?是因为通过视频能方便快捷地获取到大量信息。但视频数据量非常巨大,视频的网络传输也面临着巨大的挑战。于是视频编解码技术就出场了。
具体到实时视频场景,不仅仅是数据量的问题,实时通信对时延要求、设备适配、带宽适应的要求也非常高,要解决这些问题,始终离不开视频编解码技术的范畴。
本文将从视频编解码技术的基础知识入手,引出视频编解码技术中非常基础且重要的预测技术,学习帧内预测和帧间预测的技术原理。
2、为什么需要视频编解码
首先,来复习一下视频编解码方面的理论常识。
视频是由一系列图片按照时间顺序排列而成:
- 1)每一张图片为一帧;
- 2)每一帧可以理解为一个二维矩阵;
- 3)矩阵的每个元素为一个像素。
一个像素通常由三个颜色进行表达,例如用RGB颜色空间表示时,每一个像素由三个颜色分量组成。每一个颜色分量用1个字节来表达,其取值范围就是0~255。编码中常用的YUV格式与之类似,这里不作展开。
以1280x720@60fps的视频序列为例,十秒钟的视频有:128072036010 = 1.6GB。
如此大量的数据,无论是存储还是传输,都面临巨大的挑战。视频压缩或者编码的目的,也是为了保证视频质量的前提下,将视频减小,以利于传输和存储。同时,为了能正确还原视频,需要将其解码。
总之,视频编解码技术的主要作用就是:在可用的计算资源内,追求尽可能高的视频重建质量和尽可能高的压缩比,以达到带宽和存储容量的要求。
为何突出“重建质量”?
因为视频编码是个有损的过程,用户只能从收到的视频流中解析出“重建”画面,它与原始的画面已经不同,例如观看低质量视频时经常会碰到的“块”效应。
如何在一定的带宽占用下,尽可能地保持视频的质量,或者在保持质量情况下,尽可能地减少带宽利用率,是视频编码的基本目标。
用专业术语来说,即视频编解码标准的“率失真”性能:
- 1)“率”是指码率或者带宽占用;
- 2)“失真”是用来描述重建视频的质量。
与编码相对应的是解码或者解压缩过程,是将接收到的或者已经存储在介质上的压缩码流重建成视频信号,然后在各种设备上进行显示。
【视频编码压缩,H264编码原理】
【【B站最好的音视频课程】腾讯内部人员都在疯传!大佬亲自带飞,想快速掌握音视频开发技术,进大厂拿高薪不是梦FFmpeg/webRTC/rtmp/SRS/C/C++】
3、什么是视频编解码标准
视频编解码标准,通常只定义上述的解码过程。
例如 H.264 / AVC 标准,它定义了什么是符合标准的视频流,对每一个比特的顺序和意义都进行了严格地定义,对如何使用每个比特或者几个比特表达的信息也有精确的定义。
正是这样的严格和精确,保证了不同厂商的视频相关服务,可以很方便地兼容在一起