又拍云 H.265 视频点播解决方案详解

好消息!又拍云即将发布 H.265 视频点播解决方案,该解决方案包括:视频上传、视频存储、视频编码、视频分发适配、视频解码等功能。

背景

继爱奇艺、乐视和 PPTV 等视频厂商宣布支持 H.265 高清视频播放后,2014 年 4 月,搜狐视频宣布正式上线视频行业首个 H.265 高清大片专区,用户用搜狐影音客户端或网页,可在线观看 200 余部当下最火的超高清大片,此举无疑将加速网络视频行业全面高清化乃至超高清化的发展。作为云分发厂商,如何进行 H.265 适配方案的推广,下文将进行详细概述。

解决方案:H.265 自适应解决方案

1、什么是 H.265 ?

H.265 又称 HEVC(High Efficieny Video Coding),是国际标准化组织和国际电联组织在 2013 年 3 月正式批准通过的新一代视频压缩标准,主要面向高清数字电视以及视频编解码系统的应用。

H.265 能在有限带宽下传输更高质量的网络视频,也就是说只需原先 H.264 编码的一半带宽即可传输相同质量的视频。目前在用户关心的 4K 方面,H.265 同时支持 4K(4096×2160)和 8K(8192×4320)像素的超高清视频。由于 4K 视频的数据量是高清的 4~8 倍,因此需要更高效率的压缩编码算法,根据公开资料表示,H.265 的编码效率是 H.264 的两倍。

从技术层面上分析,目前 H.265 的架构大致上与 H.264 相似,主要包含帧内预测、帧间预测、转换、量化、去区块滤波器、熵编码等模块。不同的是 H.265 整体被分成了编码单位、预测单位和转换单位三个部分。

更多了解,请参考 H.265 详解

2、解决了什么问题?

显而易见,视频网站或移动客户端要使用 H.265 视频,需要解决如下几个问题:

  • H.265 视频编码

用户原始视频的视频编码格式为 H.264、H.263、MPEG-2、MPEG-4 等,需要转换为 H.265 编码格式。

  • H.265 视频解码

支持移动端 H.265 视频软解码,平台包括 iOS 和 Android。

  • CDN 对 H.265 视频的适配

鉴于有些客户端不支持 H.265 视频,CDN 如何进行有效识别,响应不同副本的视频给客户端。

CDN 如何识别 H.265 视频请求 ?

CDN 当前识别客户端是否支持 H.265 解码是通过 HTTP 请求头:Accept-Encoding: h265 来判断的,CDN 收到该请求之后,再去判断 CDN 节点是否有 H.265 缓存副本,否则直接返回原始视频资源。

注意:此处需要约定规范,客户端请求头必须携带 Accept-Encoding: h265 方可实现智能识别。请求识别流程如下截图所示:

从流程图可以看出,H.265 视频资源响应了一个 Content-Encoding:h265 的头部。

H.265 视频点播方案如何使用 ?

首先,我们来了解一下 H.265 视频资源的整个访问流程,如下图所示:

  •  第一步:客户端请求 H.265 视频资源,例如:http://video.example.com/test.mp4,HTTP 请求头携带 Accept-Encoding: h265,方便 CDN 智能识别;
  •  第二步:CDN 节点判断是否有 H.265 视频副本,如有,则直接响应给客户端,整个流程结束;如果没有,则进入第三个步骤;
  •  第三步:CDN 节点回源获取 H.265 视频资源,如有则直接响应,并在 CDN 节点进行缓存;如果没有,进入第四步;
  •  第四步:源站返回原始视频资源,并在 CDN 节点默认缓存 6 分钟,缓存过期之后回源探测。

备注:上文中所说的原始视频特指 H.264/H.263 等视频编码的视频。

场景一:使用又拍云存储

使用又拍存储源,可以满足视频上传加速、视频转码(包括编码)、视频的存储等需求。如果您的视频已经转成 H.265 编码的视频,请忽略视频转码步骤。

  • 视频上传和存储

又拍云对象存储服务提供 API、FTP/FTPS、UPX、cURL、SDK 等多种上传方式,支持海量安全存储,更多了解请参考:

又拍云存储服务介绍

又拍云存储开发者工具

  • 视频异步转码

如果您存在又拍云对象存储服务的原始视频是 H.264 编码的视频,与此同时,希望同步转为 H.265 的视频,我们可以提供异步视频转码服务。详细参见:

又拍云音视频处理服务

  • 视频分发适配

从上文可以看出,您可以在又拍云对象存储服务上存储两个不同副本的视频资源,一个是 H.264 视频副本,这里称为原始视频;另外一个是 H.265 视频副本,这样可以满足不同客户端的访问。您既希望支持 H.265 视频的客户端可以访问到 H.265 视频,不支持 H.265 视频的客户端可以访问到原始视频副本,此时,通过一定的约定规范,CDN 可以做到智能识别并响应不同副本的视频资源。

  • 移动端 SDK 解码

又拍云目前支持移动端 H.265 解码,支持 iOS 和 Android 平台。详细参见:

Android SDK

iOS SDK 


场景二:使用用户自主源

使用用户自主源,又拍云无需提供视频文件的存储,用户自行将视频转为 H.265 编码格式,自行上传即可。我们可以提供的服务包括适配分发适配、移动 SDK 解码。

  • 视频分发适配

从上文可以看出,您可以在又拍云对象存储服务上存储两个不同副本的视频资源,一个是 H.264 视频副本,这里称为原始视频;另外一个是 H.265 视频副本,这样可以满足不同客户端的访问。您既希望支持 H.265 视频的客户端可以访问到 H.265 视频,不支持 H.265 视频的客户端可以访问到原始视频副本,此时,通过一定的约定规范,CDN 可以做到智能识别并响应不同副本的视频资源。

  • 移动端 SDK 解码

又拍云目前支持移动端 H.265 解码,支持 iOS 和 Android 平台。详细参见:

Android SDK

iOS SDK 

相关规范及约束

  • HTTP 请求头需要遵循一定的规范

客户端需要根据约定规范发起 Accept-Encoding: h265 的请求头,CDN 节点会根据此请求头来判断客户端是否支持 H.265 解码。详细参见上文:CDN 如何识别 H.265 视频请求。例如:

 GET /test.mp4 HTTP/1.1
Host: zhangchao.charmelady.net
User-Agent: curl/7.43.0
 Accept: */*
Accept-Encoding:h265

  • H.265 视频遵循一定存储规范

源站为了区分原始视频和 H.265 格式视频,H.265 视频存储路径需要约定规范为:{URL}.h265,以此来区分原始视频和 H.265 视频。存储规范目前是固定死,暂时不支持自定义。例如:

原始视频存储路径为:/test.mp4
H.265 视频存储路径为:/test.mp4.h265

总结

上文我们已经详细阐述了 H.265 整个适配方案。可以看出,又拍云可以针对视频文件提供上传、存储、转码、分发、解码等解决方案。如果您希望通过 H.265 来提升用户体验,减少传输带宽,请联系我们。更多建议,欢迎评论。

 

留下一个评论