阿里云自研编码器Ali266于2022年1月在优酷正式上线,这是已知的业界首个H.266/VVC标准的编码器商用落地项目。经过两个月的实际运行数据显示,开启Ali266后,同等画面清晰度的情况下比原H.265/HEVC方案码率最高节省40%,卡顿率降低50%,充分证明了Ali266的商用价值。

这是已知的全世界最快的H.266/VVC编码器

Ali266,是阿里云基于最新一代国际视频编码标准H.266/VVC所打造的面向点播、直播、实时通信等不同场景的编解码实现。基于Ali266演化而来的自研H.266/VVC编码器S266在MSU2021(世界编码器大赛)上取得了客观赛道8项第一,主观赛道冠军的优异成绩。从已公开的资料可知,Ali266是目前全世界最快的H.266/VVC实时高清编码器,结合自研的H.266/VVC解码器,即使是中低端手机也可清晰流畅地观看最新的H.266/VVC高清视频。

Ali266首次商用,助力优酷

阿里云一直在探索推动Ali266的商用之路,2022年1月Ali266在优酷正式上线,助力优酷率先用上了国际最新的H.266/VVC视频编解码标准。通过近2个月的实际运行显示,开启Ali266后,同等画面清晰度的情况下比原H.265/HEVC方案码率最高节省40%,卡顿率降低50%,在成本和用户体验上获得显著收益,充分证明Ali266的商用能力。

阿里云凭借在视频编解码领域的深耕和积累,致力于推动H.266/VVC标准的实用化和最新科技成果的普惠化。优酷是中国领先的在线视频平台,现支持PC、电视、移动三大终端,兼具版权、自制、合制、自频道、直播等多种内容形态,致力于用更丰富的口碑内容、更极致的视听体验、更创新的互动玩法。

提供这些应用体验的背后,是一系列非常复杂的技术,其中最核心、最基础的技术之一,就是视频编解码技术。为此,阿里云与优酷团队密切合作,将Ali266首次商用落地,第一时间上线国际最新发布的新一代视频编解码标准H.266/VVC,让优酷充分享受视频编解码标准升级带来的技术红利。

H.266/VVC标准的由来

说起H.266/VVC标准的由来,不得不提国际上的两大巨头:国际标准化组织及国际电工委员会 ISO/IEC 旗下的动态图像专家组 MPEG(Moving Picture Experts Group) 和国际电信联盟电信标准分局 ITU-T 旗下的视频编码专家组 VCEG(Video Coding Experts Group)。这两大巨头从20世纪90年代初分别发布第一代视频编解码标准MPEG-1和H.261开始,经历了30多年的时间。大家所熟知的H.264/AVC、H.265/HEVC,都是两大巨头通力合作的成果。

继2013年发布H.265/HEVC以来,两大国际标准化组织ITU-T和ISO/IEC继续强强联合,于2020年7月发布H.266/VVC的第一个正式版本。如图 1所示,H.266/VVC在包括图像分块、预测、变换、量化、熵编码和环路滤波等环节提供了多项先进的视频编码工具,较上一代H.265/HEVC标准,其压缩率大约提高了一倍。



图 1:H.266/VVC底层技术

在叶琰博士的带领下,阿里云从2019年年初开始深度参与制定H.266/VVC标准的制定。历时一年半的时间共提交了近100篇技术提案,并有多项技术提案得到采纳,为国际标准的制定做出了重要贡献,也为阿里巴巴的业务发展建立了坚实的技术基础。在H.266/VVC的制定过程中,阿里云标准团队成员也担任了多个专题讨论组(AHG)和多个核心实验的负责人,在国际标准舞台上发出中国视频产业界的声音。

Ali266:完整的H.266/VVC实时高清编解码能力

在紧跟H.266/VVC的标准化进程的同时,阿里云也第一时间启动了Ali266编解码器的开发项目,打造完整的自成一体的编解码能力,更好地打开端到端的生态,为业界提供新一代视频编解码解决方案。

在解码端,Ali266解码器通过多核并行、汇编优化、内存占用和访存效率优化等一系列工程和算法的优化手段来提高解码速度。集成Ali266解码器的中低端手机也可清晰流畅地观看最新的H.266/VVC视频或直播,近几年发布的旗舰机型甚至可支持4K@30fps的实时解码。

此外,Ali266解码器在稳定性、鲁棒性、内存占用等方面充分考虑了商业化软件的需求,经过Android、iOS等多款高中低端设备的大规模测试,验证了Ali266解码器的鲁棒性、稳定性和可商用性。

在编码端,为满足不同的业务场景需求,Ali266编码器目前支持slow、medium、fast和faster四大档次。其中,slow档次主要适用于离线应用,编码速度与x265 veryslow档次相当。

在MSU主办的2021年世界编码器大赛中,Ali266 slow档次通过阿里巴巴音视频小组命名为S266,获得了全高清(FullHD)客观性能赛道14项评测指标中的8项第一,4项第二,2项第三;在主观性能赛道,S266更是在全球16款参赛编码器中以大比分优势获得第一,在与MSU官方指定的基准编码器x265相同的主观质量下,带宽节省高达71%。MSU大赛结果显示,S266是唯一一个所有指标都进入前三的编码器,充分证明了S266在各指标下全面均衡的编码性能。

为了实现H.266/VVC标准的实用化和最新科技成果的普惠化,经过阿里云团队的持续努力,Ali266于2021年6月成为业界首个公开720p实时高清的H.266/VVC编码器,并于同年9月成为业界首个公开1080p实时高清的H.266/VVC编码器。

与x265 medium档次相比,在相同的质量下,Ali266的faster档次取得的带宽节省高达40%以上,为直播和视频会议等实时视频应用带来巨大的带宽红利。作为第一个实时高清H.266/VVC软件编码器,Ali266在业界走出了重要的一步,证明了现有的算力平台就可以让用户充分享受到国际最新标准H.266/VVC的强大压缩能力。

Ali266首次落地优酷背后的技术方案

移动端接入方案

优酷播放内核将播放流程高度封装成Consumer、open Source、open Decoder、openRender这几个模块。openSource从网络端拿到原始数据,解复用成音视频es数据并进行缓存管理,Consumer将数据不断的从缓存取出送到openDecoder,并从openDecoder拿到解码后的数据,然后将数据交给openRender渲染以及做相关后处理。他们的大致关系结构如图 2所示:



图 2:优酷播放器架构及Ali266技术方案

openDecoder与解码器之间的交互如图 3所示。openDecoder会将待解码的数据Send给解码器,然后从解码器Receive解码后的数据,Send和Receive都不block播放流程。解码器内部维护输入输出buffer,Send将数据copy到input packets,worker从input packets拿数据解码,解码后的数据被存入output frames,然后Receive就能拿到有效数据去渲染。



图 3:优酷播放器与Ali266交互细节

优酷播放内核的跨平台、可扩展、高可靠特性保障了Ali266快速顺利的在优酷平台上落地。播放内核是native层开发的,具备天然的跨平台特性,所以接入Ali266之后,不需要做太多额外的开发就可以在多个平台迅速发布,这也为Ali266快速在业务端铺量提供了保障。

openDecoder封装了所有解码相关的逻辑,对外只暴露几个简单接口与内核完成逻辑交互,所以要接入Ali266软解码器,只需要实现openDecoder的关键api即可,将解码器与播放器的复杂逻辑剥离开来,方便快速接入新的解码器。播放内核实现了智能平滑丢帧系统,可以在极端情况下丢弃部分非关键帧从而保证视频画面流畅播放。借助播放内核完善的质量监测系统,Ali266的线上播放质量得到全面监测和有效保障,使国际最新一代编解码标准在优酷的升级如丝般顺滑。

服务端接入方案

优酷转码服务端当前支持不同编码器(H.264/AVC、H.265/HEVC等),不同分辨率(270p到8K),不同帧率(25fps/60fps/120fps等)、不同封装格式(mp4/hls/cmaf等)等上百种组合方式,服务端可以依据端侧播放能力来下发不同的流数据,来保证用户的体验最优。

在优酷转码系统中,Ali266的接入主要包括编码器接入,解码器接入以及封装格式对H.266/VVC的支持,所涉及的模块与转码流程如下图所示:



图 4:Ali266接入优酷服务端模块图

封装层:优酷常用封装格式主要是MPEG-TS和MP4,服务端在Demux和Mux模块中实现了对H.266/VVC码流封装和解封装的支持。

编解码:通过在转码器中对Ali266Encoder和Ali266Decoder的注册和API调用来完成编码和解码的接入。在生产链路中为了正确探测H.266/VVC码流参数信息,在Demux模块中集成了对H.266/VVC码流的Probe、Parser能力以及Ali266Decoder。

为了使Ali266编码器能够更好的适应优酷应用场景,优酷服务端与阿里云团队相互协作,做了针对性的适配:

(1)为了提升H.266/VVC视频的播放效果,对编码器支持了编码参数信息重复下发能力,保证了用户快进快退和拖拽播放时的体验。

(2)为了视频的画质与流畅性,对Ali266Encoder针对性地做了码率控制优化,在保证视频画质的同时,降低码率波动,将播放端卡顿率相比H.265/HEVC降低了50%。

(3)为了适配优酷的智能档多清晰度随带宽平滑切换,在Ali266Encoder中对时间戳处理进行优化,使得音视频时间戳与其他格式码流(H.264/AVC、H.265/HEVC)保持一致,确保了优酷智能档无缝自适应切换。

(4)实现了优酷现有MP4/MPEG-TS的流媒体封装格式对H.266/VVC标准的支持。由于H.266/VVC标准发布时间不久,各种媒体处理工具还没有支持对H.266/VVC的封装。为此,优酷开发人员按照MPEG官方文档,在MP4 box与TS的PMT中使用官方定义的CodecId,与播放器配合打通了整个生产播放链路。

除此之外,在生产链路中优酷也针对H.266/VVC做了分辨率-清晰度档位的规格定义,并在播放服务端可以依据端侧支持能力自适应选择H.266/VVC合适档位的视频流下发,使H.266/VVC编码在优酷生产播放链路上整体落地,并达到了预期的效果。

业内首款H.266/VVC商用落地结果

Ali266于2022年1月份在优酷移动端正式上线,成为目前已知的业界首个H.266的商用落地项目。上线后截至3月23日,已经累计播放超过六十万次。各项指标如下:

• 码率:同等清晰度情况下比H.265码率降低高达40%;

• 体验:同等情况下卡顿率只有H.265的50%,平均解码耗时在8ms左右,稳定性超过99.95%;

• 功耗:满电可H.266软解播放10小时,节省流量达到1G;

• 内容:涵盖了热门的综艺、电影、电视剧等多种场景,如《古董局中局》、《长津湖》等电影,《麻花特开心》等综艺,《真相》等电视剧。

未来,持续进化Ali266的商用之路

据了解,联发科在2021年下半年发布了全球首款7nm工艺制程打造的电视SoC芯片Pentonic 2000,也是世界首批支持 H.266/VVC视频解码的芯片,具有8K/120Hz的解码能力。这对于完善H.266的生态,是个巨大的助力。可以说,H.266/VVC不是将来时,而是实实在在进入了现在进行时。

Ali266紧扣最新技术发展趋势,与音视频产业紧密结合,不仅给优酷提供了业界领先的编解码技术,也赋予了业务更多的可能性。为了进一步满足对优酷丰富的内容形态及业务场景的支持,挖掘新技术带来的红利,促进视频产业不断向前发展,接下来阿里云将会与优酷一起紧密合作,针对10bit HDR、优酷自由视角、超高清4K8K、高帧率60fps120fps等视频内容,并从点播场景进一步拓展到直播场景,持续持续推进H.266/VVC编解码的技术创新,不断探索创新音视频技术,加强其在更多视频应用、更多终端设备上的普适性,将更多的技术普惠到广大消费者,赋能千行百业的视频化需求,催生新兴产品形态和业务模式,为观众带来更极致的视听体验和更创新的互动玩法。

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。公众号后台回复【技术】可加入阿里云视频云产品技术交流群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。

Ali266首次商用落地,助力优酷码率最高节省40%的更多相关文章

  1. 大数据计算新贵Spark在腾讯雅虎优酷成功应用解析

    http://www.csdn.net/article/2014-06-05/2820089 摘要:MapReduce在实时查询和迭代计算上仍有较大的不足,目前,Spark由于其可伸缩.基于内存计算等 ...

  2. 仿优酷Android客户端图片左右滑动(自动滑动)

    最终效果: 页面布局main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...

  3. JavaScript使用DeviceOne开发实战(四)仿优酷视频应用

    开发之前需要考虑系统的差异性,比如ios手机没有回退键,所以在开发时一定要考虑二级界面需要有回退键,否则ios的手机就会陷入到这个页面出不去了.安卓系统有回退键,针对这个情况需要要求用户在3秒钟之内连 ...

  4. 【API】获取优酷视频信息接口

    序:        自己的网站中需要接入一个视频模块,虚拟主机的空间小所以只能引用第三方的链接.感觉国内优酷好不错,所以查了一下优酷的接口. 0x00:        先去优酷API开放中心申请一个开 ...

  5. 写chrome插件---一个优酷自动加粉丝助手

    写chrome插件主要就是写js , 我们要构造界面(HTML), 以及样式(CSS),  以及chrome给我们提供的jsAPI, 主要是chrome的API, 调试的话可以使用chrome的开发者 ...

  6. fedora23的firefox不能播放优酷视频?

    安装了多次 firefox的 flash player插件, 也设置了 /usr/lib/mozilla/plugins/libflashplayer.so的权限为777, 而且所有者 也是root. ...

  7. php 解析 视频 信息 封面 标题 图片 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视

    原文地址:http://www.lianyue.org/2013/2497/ <?php /** * 解析 视频信息 类 * * 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视 ** ...

  8. 优酷、YouTube、Twitter及JustinTV视频网站架构设计笔记

    本文是整理的关于优酷.YouTube.Twitter及JustinTV几个视频网站的架构或笔记,对于不管是视频网站.门户网站或者其它的网站,在架构上都有一定的参考意义,毕竟成功者的背后总有值得学习的地 ...

  9. 怎样获取优酷站内视频的MP4格式地址,嵌入到手机页面播放

    最近的有关项目需要使用video标签播放视频,并且视频的路径src是优酷里面的视频,所以需要得到优酷里面的mp4路径才能播放. 但是在网上查了下资料,看到优酷的播放格式是一个m3u8文件,如图所示: ...

  10. Android-调用优酷SDK上传视频

    最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路:   程序实现前我们先 ...

随机推荐

  1. Static关键词

    在程序中使用static 变量 1. 局部变量 普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴.编译器一般不对普通局部变量进行初始化,也就是说它 ...

  2. Promise规范与原理解析

    摘要 Promise对象用于清晰的处理异步任务的完成,返回最终的结果值,本次分享主要介绍Promise的基本属性以及Promise内部的基础实现,能够帮我们更明确使用场景.更快速定位问题. Promi ...

  3. JAVA学习week3

    本周由于c++小学期作业.未能按时学习JAVA 主要复习了基本语法 hello word 输出语法 输出格式的选择,进制的转换,注释的选择 还预习了变量相关的知识点

  4. preparedStatement.setObject()为什么要这样写?

    setObject就是给JDBC的SQL语句的占位符赋值的,即是下面的"?" 预编译的SQL:参数使用?作为占位符 注意:sql的参数使用?作为占位符. 如: select * f ...

  5. 手机成绩分析软件排行榜TOP10下载

    随着智能手机的普及和移动应用的快速发展,手机成绩分析软件越来越受到学生.家长和教育机构的关注.这些软件可以帮助用户方便地记录.分析和管理学生成绩,提供个性化的学习指导和反馈.在本文中,将详细介绍202 ...

  6. 构建满足流批数据质量监控用火山引擎DataLeap

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 面对今日头条.抖音等不同产品线的复杂数据质量场景,火山引擎 DataLeap 数据质量平台如何满足多样的需求?本文 ...

  7. 'parent.relativePath' of POM com.qbb:log_record_elegant:1.0-SNAPSHOT points at com.qbb:qiu_code instead of org.springframework.boot:spring-boot-starter-parent

    完整的错误: 'parent.relativePath' of POM com.qbb:log_record_elegant:1.0-SNAPSHOT (F:\QbbCode\qiu_code\log ...

  8. C++ Qt开发:自定义Dialog对话框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍自定义Dial ...

  9. 数字孪生和GIS结合能为智慧社区带来怎样的改变?

    数字孪生和地理信息系统(GIS)是当今智慧社区发展中的两个重要技术,它们的结合将为智慧社区带来根本性的改变和巨大的发展机遇.这种结合将深刻影响社区的规划.建设.运营和管理,为居民创造更智能.便利.宜居 ...

  10. Ubuntu apt-get 的使用

    在Ubuntu中,可以使用apt-get命令来管理软件包.下面是一些常见的apt-get命令及其用法: 安装软件包: sudo apt-get install <package> 其中,& ...