音视频:音视频的编解码 | 社区征文
一:什么是音视频
音频和视频是两个可以分开的概念,音频即声音,声音是连续不断的是一种模拟信号。 保存声音即把声音转为数字信号,保存声音在各个时间点上的振幅。可以分为:采集、预处理、编码、解码、渲染展示、文件封装、网络打包。视频即把一系列的图片每秒超过 24 帧以上人眼无法识别的看上去是平滑连续的视觉效果叫做视频。广义上分为视频和音频,它们各自有自己的编码规范和格式。
二:编解码过程
编码
通俗来讲编码就是为了压缩,要实现压缩,就要设计各种算法,将视频数据中的冗余信息去除。编码依赖于编码算法,算法的形成就是寻找规律寻找像素之间的相关性,构建模型,能找到更精准的规律建立更高效的模型,可以就是比较成功的算法。
视频里的冗余包括,空间、时间、图像构造、知识、视觉等冗余。视频是不同的帧画面连续播放下形成的,
这些帧可以主要分为三类,分别是 I 帧、B 帧、P 帧。
I 帧,是自带全部信息的独立帧,是最完整的画面(占用的空间最大),无需参考其它图像便可独立进行解码。视频序列中的第一个帧,始终都是 I 帧。对 I 帧的处理,是采用帧内编码方式,只利用本帧图像内的空间相关性。
P 帧“帧间预测编码帧”,需要参考前面的 I 帧和/或 P 帧的不同部分,才能进行编码。P 帧对前面的 P 和 I 参考帧有依赖性。但是,P 帧压缩率比较高,占用的空间较小。对 P 帧的处理,采用帧间编码(前向运动估计),同时利用空间和时间上的相关性。简单来说,采用运动补偿(motion compensation)算法来去掉冗余信息。
B 帧,“双向预测编码帧”,以前帧后帧作为参考帧。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可以达到 200:1,不过,因为依赖后面的帧,所以不适合实时传输(例如视频会议)。
主流的编码标准:
MPEG-2
MPEG-4 Simple Profile
H.264/AVC
AVS
VC-1
解码
硬解码从字面意思上理解就是用硬件上来进行解码,通过显卡的视频加速功能对高清视频进行解码,很明显就是一个专门的电路板(这样更好理解...)来进行视频的解码,是依靠显卡 GPU 的。软解码:理解就是用软件进行解码,但是实际最总还是要硬件来支持的,这个硬件就是 CPU。
假设我们直接解码个 mp4 视频文件,则 cpu 来负责解析文件头信息,把视频 bitstream 放入存储器的指定区域中,启动硬件解码器,硬件解码器解码出每副图像的 yuv 数据放入存储器另外一段地址,并进行图像后处理。 再由显示接口电路把内存中后处理过的数据读出在屏幕上显示,这样就完成了一个解码的过程。
比如如下解码流程:
未来
如今直播、短视频火爆,音视频技术在 5G、6G 的到来会发展的更加迅速,同时也需要不断地更新学习新的音视频技术包括算法极致化、功能智能化、服务平台化,,一点一点学习最后会形成技术的爆发,为音视频的发展做出自己的贡献。
评论