过去几年,又拍云一直在点播、直播等视频应用方面潜心钻研,取得了不俗的成果。我们结合点播、直播、短视频等业务中的用户场景,推出了“省带宽、压成本”系列文章,从编码技术、网络架构等角度出发,结合又拍云的产品成果,向大家介绍节省流量,降低带宽成本的妙招。

本文《深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因》,是“省带宽、压成本”系列文章的第2篇。从视频网站所遇到的问题出发,深入解析 H.265 视频编码。

往期回顾:

第一篇:《节省50%以上的流量成本,从产品架构看PCDN的节流能力

第二篇:《深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因》


今天我们聊聊视频编码。视频文件亘古以来存在一个矛盾:高清画质和视频体积的冲突,相同编码标准下,视频更高清,视频体积更大。因此,应用更先进的视频编码标准,降低视频体积,可以大幅降低网站的流量消耗。

目前应用最广泛的视频编码标准是 H.264。H.264 在低码率下的视频画质十分模糊;同时 H.264 对 2K、4K 视频的支持较差:以 H.264 的压缩率,一部4K电影的体积会超过 100G,甚至可以达到 150G、200G,这对想要抢占高清片源的视频平台来说几乎是致命的打击。

既要高清,又要视频体积小——这靠 H.264 明显是不可能了,而新的编码格式 H.265 就能满足这个要求。同样是 110 分钟的 4K 视频,用 H.265 编码进行压缩,体积可以降低 50%,相较于 H.264 的 100G-200G 而言,每一部 4K 视频都能节约大量的流量带宽成本。

H.265 是国际上公认的下一代视频编码标准则,国内外对 H.265 的支持越来越多,国内不仅有爱奇艺、搜狐、腾讯等头部视频网站开始支持 H.265 视频点播,各大字幕组也开始尝试使用 H.265 标准压制视频。

H.265:新一代视频编码技术

H.265 视频编码技术是于 2013 年定稿发布了下一代视频压缩标准,命名为 HEVC(High Efficiency Video Coding),分别被 ITU-T 和 ISO/IEC 采纳成为国际标准,即 H.265 视频压缩标准。H.265 在现有的视频编码标准 H.264 基础上,进一步提高压缩效率、提高鲁棒性(Robustness 抗变换性)和错误恢复能力、减少实时的时延、减少信道获取时间和随机接入时延、降低复杂度,以达到最优化设置。

H.265 能在有限带宽下传输更高质量的网络视频,只需 H.264 编码的一半带宽即可传输相同质量的视频。

1. 视频压缩率更出众,与 H.264 相比压缩效率提升 1 倍

H.265 全新的编码方式有效提升了视频压缩率,仅需原先的一半带宽即可播放相同质量的视频。众所周知,视频编码的码率是可以灵活控制的,以相同的视频质量为基准,H.265 编码技术相比 H.264 编码技术能够在视频容量减少 39% 到 74%,并且还能获得比 H.264 视频更好的信噪比(PSNR)效果。——拿“体积比你小,质量比你好”来形容 H.265 相比 H.264 的巨大优势,并没有显得过分。

△ H.264、H.265 压缩率对比

2.视频传输流量省 50%

IEEE 出版的 Circuits and Systems for Video Technology,其中有 Comparison of the Coding Efficiency of Video Coding Standards—Including High Efficiency Video Coding 一文,以 9 段影片进行测试 H.265 的编码表现,所得到的结果相当另人满意,即便在表现最差的样本中,节省的流量接近 30%,平均起来也达到 49.3% 的佳绩。

△ H.265 与 H.264 流量比较

3.支持蓝光 4K

H.265 编码技术有着惊人的压缩率,加上灵活的宏块像素技术,这对于 Ultra HD 4K/8K 超高清分辨率极为重要,2015 年春季正式出台的蓝光 4K(3840×2160)标准采用了 H.265/HEVC 编码标准,H.265 编码技术能够大幅降低蓝光 4K 光盘的容量需求。

H.265 压缩原理

更大的宏块和变换块:相对于 H.264 的 4×4、8×8、16×16 宏块类型,H.265 引入了 32×32、64×64 甚至 128×128 的宏块,目的在于减少高清数字视频的宏块个数,减少用于描述宏块内容的参数信息,同时整形变换块大小也相应扩大,用于减少 H.264 中变换相邻块问的相似系数。

△ H.264 与 H.265 对比图

新的 MV(运动矢量)预测方式:区别于 H.264 基于空间域的运动矢量预测方式,H.265 扩充更加多的方向进行帧内预测,同时将预测块的集合由原来的空间域扩展到时间域及空时混合域,通过率失真准则计算后选择最佳的预测块。使用该方法,在基本模式下测试,在与H.264 相同质量的情况下,得到平均为 6.1% 的压缩增益,复杂图像的压缩增益甚至能提高到 20%。

并行化设计:当前芯片架构已经从单核性能逐渐往多核并行方向发展,H.265 引入了Entropyslice、WPP 等并行运算思路,使用并行度更高的编码算法,更有利于 H.265 在GPU/DSP/FPGA/ASIC 等并行化程度非常高的 CPU 中快速高效的实现产业化。

Tile 划分机制:它使得以往的 slice、帧或 GOP 为单位的粗粒度数据并行机制更加适合于同构多核处理器上的并行实现。Dependentslice 和 WPP 机制解决了以往 H.264 等编码技术中熵编码环节无法并行实现的问题,使得整个编解码过程中 DCT、运动估计、运动补偿、熵编码等任务模块的划分更加均衡,显著提高并行加速比。

开启 H.265 自适应

与 H.264 相比,H.265 不仅更符合未来高清影片发展的趋势,而且同等画质下可以为带来更高效的视频压缩效率,有效节省流量消耗。

为了让用户使用到更先进的产品,又拍云一直在 H.265 的实用性与便捷性方面钻研,2017 年 5 月便推出了 H.265 视频自适应解决方案。又拍云 H.265 视频自适应方案集成了视频上传、视频存储、视频编码(转码)、视频分发适配、视频解码等功能。

  • 视频上传转码:用户将 H.264 编码视频上传到又拍云的服务器,又拍云将其同步转为 H.265 编码的视频;
  • 视频异步转码:针对已存储在又拍云服务器上的 H.264 编码的视频,通过又拍云异步转码服务,可转为 H.265 视频存储,同时保留 H.264 视频副本;
  • H.265自适应:又拍云 CDN 网络支持 H.265自适应功能,能够根据客户终端播放器发起的 UA 请求头 ( Accept-Encoding: h265 ),智能识别终端播放器是否支持H.265,并判断当前请求的资源是否存在 H.265 编码的文件。如果播放器支持且拥有 H.265 编码的视频,则返回 H.265 视频,否则返回原始视频,从而实现 CDN 平台的 H.265 智能适配。H.265 自适应支持又拍云存储和又拍云 CDN 两种使用场景。

推荐阅读:

【省带宽、压成本专题】从产品架构来看PCDN如何节流50%​

深度解析 H.265 视频解决方案

【省带宽、压成本专题】深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因的更多相关文章

  1. 深入解析 H.265 编码模式,带你了解Apple全面推进H.265的原因

    今天我们聊聊视频编码.视频文件亘古以来存在一个矛盾:高清画质和视频体积的冲突,相同编码标准下,视频更高清,视频体积更大.因此,应用更先进的视频编码标准,降低视频体积,可以大幅降低网站的流量消耗. 目前 ...

  2. 【省带宽、压成本专题】从产品架构来看,PCDN如何节流50%

    过去几年,我们一直在视频省流量方面潜心钻研,取得不俗的成果.本次"省带宽.压成本"系列一共会推出六篇文章,从技术迭代.硬件更新等角度出发,向大家介绍节省CDN流量,降低视频播放成本 ...

  3. 状压dp专题复习

    状压dp专题复习 (有些题过于水,我直接跳了) 技巧总结 : 1.矩阵状压上一行的选择情况 \(n * 2^n\) D [BZOJ2734][HNOI2012]集合选数 蒻得不行的我觉得这是一道比较难 ...

  4. C++实现RTMP协议发送H.264编码及AAC编码的音视频

    http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP ...

  5. C++实现RTMP协议发送H.264编码及AAC编码的音视频(转)

    C++实现RTMP协议发送H.264编码及AAC编码的音视频(转) RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia ...

  6. (转)C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播

    转:http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RT ...

  7. python3下urlopen解析中文url编码错误

    这是在ipython下测试的结果: In [24]: x Out[24]: 'http://127.0.0.1:8000/xxx/?id=a45ex0bad3c9&game=五子棋' In [ ...

  8. [.NET领域驱动设计实战系列]专题三:前期准备之规约模式(Specification Pattern)

    一.前言 在专题二中已经应用DDD和SOA的思想简单构建了一个网上书店的网站,接下来的专题中将会对该网站补充更多的DDD的内容.本专题作为一个准备专题,因为在后面一个专题中将会网上书店中的仓储实现引入 ...

  9. Spark Streaming揭秘 Day34 解析UI监听模式

    Spark Streaming揭秘 Day34 解析UI监听模式 今天分享下SparkStreaming中的UI部分,和所有的UI系统一样,SparkStreaming中的UI系统使用的是监听器模式. ...

随机推荐

  1. 即时通讯软件openfire+spark+smack

    所以我基本上分为三篇文章来介绍此类软件的开发: 第一篇是关于XMPP 协议是啥,IM 是啥以及一个比较有名的开源实现,该开源实现包括三个部分(Spark.Smack和Openfire): 第二篇讲如何 ...

  2. JVM常量池和八种基本数据及字符串

    迄今为止看到的对常量池和字符串最为透彻的解释,赞一个! 常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口等中的常量, ...

  3. sublime text3空格和tab的显示

    最近在使用sublime text3修改shell文件时,明明看着相同的文件,对比却说不一样.最后发现是空格和tab惹的祸. 1.显示空格和tab: 在Preferences→Key Bindings ...

  4. 创建一个QT for Android的传感器应用应用程序(摘自笔者2015年将出的《QT5权威指南》,本文为试读篇)

     这个手册描述了使用Qt Quick面访的方式在Android和ios设备上开发QtQuick应用程序的方法.我们使用Qt Creator实现一个QtQuick应用程序,这个应用程序基于加速器的值 ...

  5. 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版)

    ===================================================== 最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于lib ...

  6. 从Storm和Spark 学习流式实时分布式计算的设计

    0. 背景 最近我在做流式实时分布式计算系统的架构设计,而正好又要参加CSDN博文大赛的决赛.本来想就写Spark源码分析的文章吧.但是又想毕竟是决赛,要拿出一些自己的干货出来,仅仅是源码分析貌似分量 ...

  7. 消息字节——MessageBytes

    在tomcat核心处理中有这么一个需求--"为了提高编码性能,对于socket接收到的字节流不马上进行某种编码的转码,而是应该保留字节流的形式,在需要时.在指定编码时才进行转码工作" ...

  8. A*寻路算法入门(七)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  9. Install and run DB Query Analyzer 6.04 on Microsoft Windows 10

          Install and run DB Query Analyzer 6.04 on Microsoft Windows 10  DB Query Analyzer is presented ...

  10. Ubuntu安装JDK与环境变量配置

    Ubuntu安装JDK与环境变量配置 一.getconf LONG_BIT 查看系统位数,并下载相应的jdk.我的系统是32位的,所以下载的jdk是:jdk-8u77-linux-i586.gz.并且 ...