近期 Google 已经开始研究 VP10 了,VP10 是一个由 WebM 和 Motroska 包含的开放、免费视频编解码器。Google 也已利用 VP10 来处理 YouTube 4K 视频。

目前互联网上使用最多的视频编码标准是 Google 研发、无版权费的 VP9。VP9 作为 VP8 的后继产品,主要竞争对手是 MPEG 的高效视频编码标准 HEVC。和 HEVC 相比,VP9 在网络浏览器中有更良好的支持性。它也以其优秀的视频编码质量和压缩效率而被广泛应用于互联网视频网站中。

从上图可以看出 Firefox、Chrome、Opera 等主流浏览器都支持。据统计,截止到 2017 年初,大约有 75% 的浏览器已经支持 VP9。

那么 VP9 是如何在原有的视频编码标准的基础上,提升视频编码质量和压缩效率的呢?

VP9 编码效率提高 50% 以上

VP9 是一种基于宏块的变换编码格式,与 HEVC 等视频编码标准相比,VP9 等比特流格式的视频编码标准相对简单。

与 VP8 相比,VP9 视频编码标准在技术上有许多优化:

  • 支持使用 64×64 像素的编码单元,这在高分辨率视频中效果最为明显;
  • 改善运动矢量的预测,除了 VP8 的四种模式(average/"DC"、 "true
    motion"、horizontal、vertical),VP9 还支持像素的线性外推的 6 个倾斜方向的帧内预测;
  • 支持将帧分割为具有特定相似性的区域;
  • 对运动矢量的第 8 像素精度、三种可切换的子像素插值滤波器、参考运动矢量、熵编码、环路滤波、ADST、DCT 等进行优化。

图片分区优化

VP9 将图片分成 64x64 大小的宏块 —— super blocks。super blocks 按照从左到右,从上到下的光栅顺序处理。同时与其他编解码器相同,super blocks 最小可以细分到 4x4 。细分宏块方式与 HEVC 一样通过递归四叉树编码结构完成,但是 VP9 支持水平或垂直细分。

此外,VP9 也支持拼贴,图片会被分解成沿着 super blocks 边界拼贴成网格。与 HEVC 不同的是,这些网格能均匀地分布,并且有两个幂数。网格的宽度 256 像素与 4096 像素之间。

比特流编码

VP9 使用 8 位算术编码引擎 bool-coder 压缩比特流。概率模型对整个帧是固定的,所有概率模型在帧数据开始解码之前都是已知的。这些概率模型存储在帧的上下文中,解码器维护在上下文中的四个概率模型。

每一帧编码组成:

  • 未压缩的标题:十几个字节,包含像图片大小,循环过滤器强度等;
  • 压缩标头:传输用于帧的 Bool 编码部分;
  • 压缩帧数据(布尔编码数据):重建帧所需的数据,包含宏块分区大小,运动矢量,帧内模式和变换系数。

VP9 与 VP8 不同的是,不存在数据分区,所有数据类型以 super blocks 编码顺序交织。

帧内预测

VP9 中的帧内预测类似于 AVC / HEVC 的帧内预测,​​遵循变换宏块分区。因此帧内预测操作总是正方形的。比如说,具有 8×8 变换的 16×8 块会导致两次 8×8 亮度预测操作。

VP9 有 10 种不同的预测模式,其中 8 个预测模式是定向的。像其他编解码器一样,帧内预测需要两个 1D 阵列,其中包含相邻像素块重构的左侧像素和上侧像素。左侧数组的高度与当前块的高度相同,上侧数组宽度是当前像素块的两倍。

帧间预测

VP9 帧间预测使用 ⅛ 像素进行运动补偿。一般情况下,运动补偿是单向的,每个块一个运动矢量,没有双向预测。不过,VP9 也支持“复合预测”(双向预测),其中每个块有两个运动矢量并且两个结果预测样本被平均。为了避免双向预测的专利限制, Google 仅在标记为不可显示的帧中才启用“复合预测”(双向预测)。

此外,VP9 提供了一个新功能,每块可以选择三种不同的子像素插值滤波器:

  • 正常的第 8 像素;
  • 平滑的第 8 像素,可以进行平滑或模糊预测;
  • 锐利的第 8 像素, 可以进行锐利预测。

残差信号编码

VP9 支持四种变换大小:32x32、16x16、8x8 和 4x4。这些变换与其他大多数编码一样,是 DCT 的近似整数。在帧内编码宏块中,垂直和水平变换路径中的一者或两者会是 DST(离散正弦变换)。

虽然 Google 已经在研究 VP10,但是距离 VP10 的全面应用还有较长的时间。VP9 才是目前最具有普及意义的视频编码标准。

快速启用 VP9

目前,又拍云多媒体处理已支持 VP9 视频编码标准。客户在在进行音视频处理时,只需把视频编码格式设置成 libvpx-vp9,即可自动实现 VP9 视频编码标准,为终端用户推送VP9 格式。

Google 视频编码格式 VP9 究竟厉害在哪里相关推荐

  1. 都说 WebP 厉害,究竟厉害在哪里?

    之前在< WebP 的前世今生 >一文中,介绍了 WebP 图片格式是由 Google 基于 VP8 视频编码格式研发的,同时提供有损压缩和无损压缩两种格式,那么今天就来看看 WebP 有 ...

  2. 音视频开发编程技术(一):视频编码格式

    1.视频是什么   所谓视频,其实就是将一张一张的图片连续的放出来,类似于播放放幻灯片一样.由于人眼的常规可视帧数是每秒24帧,也就是说当每秒播放的图片数量大于24张时,人眼反馈回大脑的画面就是连续的 ...

  3. 【opencv】6.视频编码格式与封装格式

    视频编码格式与封装格式,opencv2.4.8不能读取h265编码格式的视频文件 (1)编码格式是编码格式,封装格式(也可以说容器)是封装格式.编码格式有H.265.JPEG.MPEG-4 Video ...

  4. js 判断视频编码格式是不是avc格式的

    在做一个视频上传功能时,测试提出上传的部分视频没有办法播放,于是找了半天,发现是编码格式的问题,并 不是所有的mp4 视频都支持vide 标签播放,在这里用到了一个插件 mp4box,来判断这个视频是 ...

  5. webrtc 视频编码格式及参数配置

    https://blog.csdn.net/CrystalShaw/article/details/80372015 一.视频编码格式初始配置 webrtc\media\engine\internal ...

  6. java 音频解码_java视频音频解码-封装xuggle-实现多种视频编码格式解码扩展

    手头做一个视频相关项目,但是客户发来的测试视频(avi格式) 现有组件不能解码.现有 视频解码组件方案有基于JMF和opencv Jni调用.远远不能满足目前市面上玲琅满目的各种视频编码 标准. 进行 ...

  7. 【Codecs系列】YUY2和MJPG视频编码格式区别

    DATE: 2020.12.17 文章目录 1.参考 2.YUY2 3.YUY2和MJPG视频编码格式区别 1.参考 YUY2和MJPG视频编码格式区别 [Codecs系列]之YUV视频数据的存储方式 ...

  8. OpenCV视频篇——视频文件格式--视频封装格式--视频编码格式区分

    目录 一.前言 二.视频文件格式(文件格式) 三.视频封装格式(视频格式) 1.AVI 2.QuickTime 3.高级流格式文件 4.RealVideo 5.NAVI 6.DivX 7.MPEG 四 ...

  9. 解决html中video标签因为视频编码格式不能打开视频文件的问题

    需要做一个目标检测算法的输入视频和输出视频的直观对比展示页面,在html5中采用了video标签: 但是显示无效源,应该是视频本身的问题,查看了html5的video文档: 决定去查看一下in.avi ...

最新文章

  1. oc引导win方法_[OC更新]机械革命10代标压稳定版更新
  2. 移动端应用类型及特点
  3. window.onload,body onload=function(), document.onreadystatechange, httpRequest.onreadystatechang
  4. 使用java连接ftp服务器_Java如何连接到FTP服务器?
  5. java索引丢失怎么解决_java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1解决办法...
  6. transformers PreTrainedTokenizer
  7. 第 14 章 程序员常用 10 种算法
  8. 用python将word文档导入数据库_python读取word文档,插入mysql数据库实例
  9. B2B电商平台--ChinaPay银联电子支付功能
  10. 人人商城小程序 java版_人人商城小程序用户授权问题
  11. 开源力量 Linux内核源码深度解析与开发实战
  12. 栅格数据灰度化并前端转换展示
  13. Java开发中各类名词解释大全
  14. 专业Java报表工具Stimulsoft Reports.Java常见问题解答
  15. 元岛屋日式烤肉,这个夏天你怎可错过!
  16. 以Listener和Talker为例ROS1和ROS2代码对比
  17. 基于以太坊的区块链浏览器搭建
  18. 写了一个iPhone越狱快捷下拉开关插件
  19. linux usb驱动样例,Linux 2.6字符设备驱动程序样例
  20. 计算机工程学院文艺例会,信息科学与工程学院学生会学生会全体例会暨部门风采展示大会...

热门文章

  1. [前端]npm安装慢,换用淘宝的镜像
  2. OpenResty 简单编写一个Module
  3. 【NodeJS 学习笔记02】入门资源很重要
  4. uniapp---为什么使用uniapp_以及uniapp开发的app展示_使用hbuilderx简单搭建一个uniapp_一次开发_小程序_Android_IOS_快应用通用工作笔记002
  5. OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
  6. 持续集成部署Jenkins工作笔记0015---编辑SVN钩子程序
  7. android学习笔记---31_多线程断点下载器,下载原理实现
  8. 人脸标注工具源码解读
  9. 显式强制类型转换static_cast, dynamic_cast, const_cast, reinterpret_cast
  10. pytorch DistributedDataParallel提示未参与loss计算的变量错误