导读:随着移动互联网技术的蓬勃发展,视频已无处不在。视频直播、视频点播、短视频、视频聊天,已经完全融入了每个人的生活。Cisco 发布的最新报告中写道,到 2022 年,在移动互联网流量中,视频数据占比将高达 82% 。视频为何如此普及呢?是因为通过视频能方便快捷地获取到大量信息。但与此同时,因为视频数据量非常巨大,视频的传输、存储也面临着巨大的挑战。从 20 世纪 90 年代以来,数字视频编解码技术迅速发展,一直是国内外研究的热点领域。视频编解码,将是保证用户高品质视频体验的重要技术。

No.1   视频编解码技术及标准

视频编解码技术的主要作用,是在可用的计算资源内,追求尽可能高的视频重建质量和尽可能高的压缩比,以达到带宽和存储容量的要求。为何突出“重建质量”?因为视频编码是个有损的过程,用户只能从收到的视频流中解析出“重建”画面,它与原始的画面已经不同,例如观看低质量视频时经常会碰到的“块”效应。如何在一定的带宽占用下,尽可能地保持视频的质量,或者在保持质量情况下,尽可能地减少带宽利用率,是视频编码的基本目标。用专业术语来说,即视频编解码标准的“率失真”性能。“率”是指码率或者带宽占用;“失真”是用来描述重建视频的质量。与编码相对应的是解码或者解压缩过程,是将接收到的或者已经存储在介质上的压缩码流重建成视频信号,然后在各种设备上进行显示。

视频编解码标准,通常只定义上述的解码过程。例如 H.264 / AVC 标准,它定义了什么是符合标准的视频流,对每一个比特的顺序和意义都进行了严格地定义,对如何使用每个比特或者几个比特表达的信息也有精确的定义。正是这样的严格和精确,保证了不同厂商的视频相关服务,可以很方便地兼容在一起,例如用 iPhone、Android Phone 或者 windows PC 都可以观看同一在线视频网站的同一视频。世界上有多个组织进行视频编码标准的制定工作,国际标准组织 ISO 的 MPEG 小组、国际电信联盟 ITU-T 的 VCEG 小组、中国的 AVS 工作组、Google 及各大厂商组成的开放媒体联盟等。

(图1 视频编码标准及发展历史)

自 VCEG 制定 H.120标准开始,视频编码技术不断发展,先后成功地制定了一系列满足不同应用场景的视频编码标准,如图1所示。VCEG 组织先后制定了H.120、H.261、H.262(MPEG-2 Part 2)、H.263、H.263+、H.263++。MPEG也先后制定了MPEG-1、MPEG-2、MPEG-4 Part 2。以及两个国际组织合作制定的H.264/AVC、H.265/HEVC、H.266/VVC;中国自主知识产权的 AVS、AVS2、AVS3 视频编码标准;Google 制定的 VP8、VP9;Google、思科、微软、苹果等公司组成的开放媒体联盟(AOM)制定的 AV1。这里特别要提一下H.264/AVC。H.264/AVC虽有近20年历史,但它优秀的压缩性能、适当的运算复杂度、优秀的开源社区支持、友好的专利政策、强大的生态圈等多个方面的因素,依旧让它保持着强大的生命力,特别是在实时通信领域。像 ZOOM、思科 Webex 等视频会议产品和基于 WebRTC SDK 的视频服务,大多数主流场景都采用 H.264/AVC。

No.2  混和编码框架

纵观视频标准历史,每一代视频标准都在率失真性能上有着显著的提升,他们都有一个核心的框架,就是基于块的混合编码框架,如图2所示。它是由J. R. Jain 和A. K. Jain在1979年的国际图像编码学会(PCS 1979)上提出了基于块运动补偿和变换编码的混合编码框架。

(图2 混和编码框架)

我们一起来对该框架进行拆解和分析。从摄像头采集到的一帧视频,通常是 YUV 格式的原始数据,我们将它划分成多个方形的像素块依次进行处理(例如 H.264/AVC 中以16x16像素为基本单元),进行帧内/帧间预测、正变换、量化、反量化、反变换、环路滤波、熵编码,最后得到视频码流。从视频第一帧的第一个块开始进行空间预测,因当前正在进行编码处理的图像块和其周围的图像块有相似性,我们可以用周围的像素来预测当前的像素。我们将原始像素减去预测像素得到预测残差,再将预测残差进行变换、量化,得到变换系数,然后将其进行熵编码后得到视频码流。

接下来,为了可以使后续的图像块可以使用已经编码过的块进行预测,我们还要对变换系统进行反量化、反变换,得到重建残差,再与预测值进行求合,得到重建图像。最后我们对重建图像进行环路滤波、去除块效应等,这样得到的重建图像,就可以用来对后续图像块进行预测了。按照以上步骤,我们依次对后续图像块进行处理。

对于视频而言,视频帧与帧的间隔大约只有十到几十毫秒,通常拍摄的内容不会发生剧烈变化,它们之间存在非常强的相关性。如图3所示,将视频图像分割成块,在时间相邻的图像之间进行匹配,然后将匹配之后的残差部分进行编码,这样可以较好地去除视频信号中的视频帧与帧之间的冗余,达到视频压缩的目的。这就是运动补偿技术,直到今天它仍然是视频编解码的核心技术之一。

(图3 运动估计和运动补偿)

变换编码的核心思想是把视频数据分割成块,利用正交变换将数据的能量集中到较少几个变换系数上。结合量化和熵编码,我们可以获得更有效的压缩。视频编码中信息的损失和压缩比的获得,很大程度上来源于量化模块,就是将源信号中的单一样本映射到某一固定值,形成多到少的映射,从而达到压缩的目的,当然在压缩的过程中就引入了损失。量化后的信号再进行无损的熵编码,消除信号中的统计冗余。熵编码的研究最早可以追溯到 20 世纪 50 年代,经过几十年的发展,熵编码在视频编码中的应用更加成熟、更加精巧,充分利用视频数据中的上下文信息,将概率模型估计得更加准确,从而提高了熵编码的效率。例如H.264/AVC中的Cavlc(基于上下文的变长编码)、Cabac(基于上下文的二进制算术编码)。算术编码技术在后续的视频编码标准,如AV1、HEVC/H.265、VVC/H.266 中也有应用。

视频编码发展至今,VVC/H.266 作为最新制定的标准,采纳了一系列先进的技术,对混合编码框架的各个部分都进行了优化和改进,使得其率失真性能相比前一代标准,又提高了一倍。例如,VVC/H.266 采用了128x128大小的基本编码单元,并且可以继续进行四叉树划分,支持对一个划分进行二分、三分;色度分量独立于亮度分量,支持单独进行划分;更多更精细的帧内预测方向、帧间预测模式;支持多种尺寸和形式的变换、环内滤波等。VVC/H.266 的制定,目标是对多种视频内容有更好支持,例如屏幕共享内容、游戏、动漫、虚拟现实内容(VR、AR)等。其中也有特定的技术被采纳进标准,例如调色板模式、帧内运动补偿、仿射变换、跳过变换、自适应颜色变换等。

No.3   提升质量的更多手段

视频编解码标准保证了视频的互通性,视频质量的提升仍然有很多可以深入研究的热点问题。如,基于人眼的主观质量的编码优化、基于AI的编码优化、内容自适应编码等。基于人眼的主观质量优化,主要利用人眼的视觉特性,将掩蔽效应、对比度灵敏度、注意力模型等与编码相结合,合理分配码率、减少编码损失引起的视觉不适。AI在视频编解码领域的应用,包括将多种人工智能算法,如分类器、支持向量机、CNN等对编码参数进行快速选择,也可以使用深度学习对视频进行编码环外与编码环内的处理,如视频超分辨率、去噪、去雾、自适应动态范围调整等编码环外处理,达到提升视频质量的目的;CNN网络取代编码器中的环路滤波、CNN进行帧内预测等编码环内处理,降低编码产生的损失之外,可以进一步提升预测准确度,达到更好的编码效果;此外还有打破传统混合编码框架的深度神经网络编码,如Nvidia的Maxine视频会议服务,利用深度学习来提取特征,然后对特征进行传输以节省带宽。内容自适应技术,也可分成两类,一是编码环内根据编码内容调整编码器的参数,二是编码环外根据要编码的内容进行码率、帧率、分辨率等调整。

No.4  结束语

拍乐云Pano 团队在视频编解码领域有着丰富的经验积累和深入的技术理解,采用独有的视频编解码算法,在保证视频质量的同时,高效利用带宽,让用户体验面对面一般的顺畅沟通和超清画质。接入Pano SDK,企业开发者就可以在自己的应用里轻松实现优异的视频通话能力,再也不必为视频编解码技术的复杂而伤神了。

深入浅出理解视频编解码技术相关推荐

  1. 【从零开始】理解视频编解码技术

    [从零开始]理解视频编解码技术 auxten ​ CovenantSQL 联合创始人 ​关注他 1,263 人赞同了该文章 转载自: https://github.com/leandromoreira ...

  2. 深入理解视频编解码技术----基于H.264标准及参考模型 读书笔记

    书名: <深入理解视频编解码技术--基于H.264标准及参考模型> 第一章 1.各种变换,如DCT, 离散傅里叶变换等,是为了变换到另一个域中,便于对图像进行压缩(如果加入预测,残差值会更 ...

  3. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  4. 【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据...

    <H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.2 ...

  5. 【H.264/AVC视频编解码技术详解】七、 熵编码算法(1):基础知识

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  6. 【H.264/AVC视频编解码技术详解】二十三、帧间预测编码(1):帧间预测编码的基本原理

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  7. 【H.264/AVC视频编解码技术详解】二. 主流视频编码标准的发展

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  8. 【H.264/AVC视频编解码技术详解】四. 常见H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  9. 【H.264/AVC视频编解码技术详解】八、 熵编码算法(2):H.264中的熵编码基本方法、指数哥伦布编码

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

最新文章

  1. MAC下的反编译、反汇编和调试神器Hopper Disassembler
  2. 理解卷积神经网络?看这篇论文就够了
  3. 看BAT技术面试官如何挑选Java程序员
  4. java大文件 索引_JAVA 大文件上传解决方案(500M以上)
  5. 史无前例的 HTML5 资源参考指南
  6. java发送接收UDP数据包:字符串,byte[]字节数组,文件等
  7. mysql闩_MySQL锁概述
  8. chapter 9 series
  9. 经典网络DenseNet介绍
  10. MFC 用Gdiplus画曲线和直线
  11. 正确的座机号码格式_正确的填写手机号码的格式是什么?
  12. 故障解决:端口已被占用 1080
  13. hapi入门之Authentication篇
  14. python ndarray append_Python中的numpy.append()
  15. Shopee打包贴单商品代发选星卓越货代服务系统
  16. Linux useradd -M -s
  17. 初中物理60个重要知识点
  18. VM虚拟机安装win7系统
  19. gis城市模型建立之地形模型的建立
  20. PyQt模拟微信聊天页面开发

热门文章

  1. 软件测试是干什么的 发展前景怎样?
  2. ⭐程序员必备软件图鉴⭐(建议收藏)
  3. 关于个人在遇到Synaptics后的处理方法
  4. flex是什么及flex布局语法
  5. 如何搭建一个属于自己的博客/企业网站?
  6. windows下安装Python的IPy模块
  7. Ubuntu 下最好用的pdf阅读器okular
  8. 编写Makefile文件
  9. python词云分析--媒体近期的讨论热点
  10. 可口可乐市场调查失败的原因_可口可乐失败案例