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

本文《深入解析 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. Android 增量更新和升级

    在年初的时候,尝试了一把热修复技术,当时选择的是阿里的andfix,使用起来也很简单,这里就不在多少,如果你对andfix有兴趣请链接:点击打开链接.虽然网上将热修复的文章很多,不过我还是想说原理,然 ...

  2. API创建员工支付方式

    DECLARE ln_method_id PAY_PERSONAL_PAYMENT_METHODS_F.PERSONAL_PAYMENT_METHOD_ID%TYPE; ln_ext_acc_id P ...

  3. Android Demo---如何敲出圆角的Button+圆角头像

    经常玩儿App的小伙伴都知道,APP上面有很多按钮都是圆角的,圆形给人感觉饱满,富有张力,不知道设计圆角按钮的小伙伴是不是和小编有着相同的想法`(*∩_∩*)′,听小编公司开发IOS的小伙伴说,他们里 ...

  4. mysql数据库连接池使用(一)dbcp方式的配置

    Apache的数据库连接池 DBCP的常用配置说明,因为项目中用到了需要对其封装,所以必须先了解怎么配置以及各个配置字段的含义,理解的基础上开发我们自己的数据库连接池.可以参考官网dbcp官网. db ...

  5. Android Paint类介绍以及浮雕和阴影效果的设置

    Paint类介绍 Paint即画笔,在绘制文本和图形用它来设置图形颜色, 样式等绘制信息. 1.图形绘制 setARGB(int a,int r,int g,int b); 设置绘制的颜色,a代表透明 ...

  6. 在Android Studio 上安装Genymotion插件

    首先去官网http://www.genymotion.net/下载Genymotion并安装好. 其次打开AS的设置界面,找到Plugins插件目录 然后在搜索里搜Genymotion,然后点击Bro ...

  7. Shell脚本编程入门(一)

    最近在学shell,记录一下. if语句的使用: 1.判断两个参数大小 #!/bin/sh #a test about if statement a=10 b=20 if [ $a -eq $b ]; ...

  8. Android实现登录小demo

    安卓,在小编实习之前的那段岁月里面,小编都没有玩儿过,如果说玩儿过,那就是安卓手机了,咳咳,敲登录的时候有种特别久违的熟悉,这种熟悉的感觉就和当时敲机房收费系统一样,那叫一个艰难啊,不过小编相信,在小 ...

  9. iOS中 喷枪打字动画的实现

    实现原理比较简单,这里不做过多介绍. #import "ViewController.h" @interface ViewController () @property (weak ...

  10. Mybatis接口编程原理分析(一)

    Mybatis接口编程示例 (1)首先定义接口编程需要的接口及其方法 public interface IUserMapper { public User getById(int id);//接口方法 ...