本文分享内容主要分为四个部分:

  • 全民直播大时代的背景介绍

  • 直播痛点分析

  • 淘宝直播窄带高清技术

  • 音视频技术趋势探讨

背景 - 全民直播大时代

淘宝直播三大核心技术揭秘

在疫情的影响下,直播从传统的秀场应用逐渐渗透到行业的各个领域。包括在线课堂,旅游,政企,房车销售等等,可以说是全民直播时代已经到来。

淘宝直播三大核心技术揭秘

在这样的一个大背景下,过去一年淘宝直播得以快速发展。2019 年,淘宝直播拥有了 4 亿 + 的年度用户规模,有 100 万 + 年度主播入驻,2000 亿 + 年度直播成交以及 4000 万 + 直播商品。春节期间,钉钉在线课堂更是有 350 万 + 的教师主播,为 1.2 亿 + 中小学生提供了在线课程服务。

直播痛点分析

淘宝直播三大核心技术揭秘

在这么大的一个业务体量下,我们将会面对非常多的难点与挑战。总的来说,包含以下三个部分,首先是成本,包括带宽、存储和转码三个方面。其次是用户体验,例如画质,音质,秒开、卡顿和延时。最后是效率方面,例如开播的效率、审核的效率和理解分发的效率。接下来我们就来看一下淘宝在成本和体验优化方面做了哪些工作。

淘宝直播窄带高清技术

淘宝直播窄带高清

淘宝直播三大核心技术揭秘

淘宝直播有三大核心技术, 第一大核心技术是端上窄带高清。 我们采用 HEVC 编码实现了 720p,25fps,800kbps 的压缩,并且 PSNR> 43db/VMAF>90。端上窄带高清技术主要应用有三个方面:第一是音视频增强,采用基于 AI 的图像增强、美颜和语音增强来提高生产质量。第二是感知处理,采用信源信道联合自适应编码。第三是 S265 编码器,S265 编码器是业界领先的 HEVC 编码器。

第二大核心技术是零转码系统, 我们实现了端到端原始流生产的和播放,成功的解决了两个核心的痛点问题:不同网络速度的兼容和不同播放设备的兼容,后者主要通过高性能解码器实现 iOS,Android 和 H5 三端的 100% 解码。

第三大核心技术是低延时技术, 我们实现了端到端秒级延时。主要依靠两个技术,一个是基于 RTC 的实时直播系统,第二个是 S265 低延时编码技术。

淘宝直播系统架构

淘宝直播三大核心技术揭秘

如图所示淘宝直播的系统架构,从生产侧来看,有采集、增强、感知处理、S265 编码四个环节。云端我们有边缘的接入,有中心接入、切片录制和 CDN 分发以及边缘分发。在播放端有拥塞控制、解码、渲染和显示。除此之外,在云端还有内容审核,质量监控,内容理解和智能分发。

端上窄带高清

淘宝直播三大核心技术揭秘

生产侧的第一个环节是图像增强,为了提升主观质量,我们引入了图像增强技术,对编码前的视频做去噪、去抖、纹理增强以及美颜、美型的功能。除此以外,在后处理部分,我们还引入了适时超分和 HDR 技术来提高观看质量。在美颜、美型以及图像处理等方面,我们引入了 GPU 的技术,包括内存带宽优化、shader 优化、Pipeline 优化等等以减少 GPU 的开销。

淘宝直播三大核心技术揭秘

针对音质的优化,我们采用了智能降噪技术。无论是在 STO 还是 PESQ 的指标上都显著高于传统 WebRTC 算法,在性能和包大小方面也都可以实现普通设备的覆盖。下面播放的三段音频,分别是原始音频、RTC 降噪和阿里降噪音频。原始音频我们可以明显听到马路上车呼啸而过的声音非常强烈。RTC 降噪音频中降噪产生了一定的效果,但是汽车飞驰而过的呼啸声还是非常明显。而在阿里降噪音频中,我们可以听到汽车呼啸而过的声音已经基本消失。

淘宝直播三大核心技术揭秘

生产的第二个环节是感知处理。我们采用信源信道联合自适应编码技术。 感知处理分为 5 个方面。

首先是 ROI 区域的感知, 我们基于 PixelAI 人脸检测加商品检测,对 ROI 区域进行提取和重点编码。

第二是场景的感知, 不同的场景适合不同的编码参数,我们通过对场景进行分类,对于不同的场景赋予不同的编码参数来提高压缩质量。

第三个是智能码控 CARC, 我们采用机器学习的码率控制,对简单场景赋予较低的码率,对复杂的场景赋予较高的码率来实现对带宽的节省。

第四个是网络带宽的感知, 在网络比较好的时候,我们会采用比较高的码率来实现画质的提升,在网络不太好的时候,会降低码率,避免发生带宽拥塞,由于 cdn 采用峰值收费,峰谷时间段还可以采用不同码率策略。

最后是设备算力的感知, 不同的设备拥有不同的算力,我们可以实时检测设备的算力情况及时调整编码的档次,以此来实现对算力和质量的平衡。

淘宝直播三大核心技术揭秘

生产的第三个环节是编码,这又要讲到我们核心的 S265 编码器,得益于 S265 编码器的编码压缩技术,我们实现了淘宝直播的 720p、800kbs、25fps 编码,相比于业界常见的 720p 1600kbps 节省了 50% 的带宽。

钉钉的在线课堂我们更是把码率压缩到了 200kbs,并实现了 43db 以上的质量。S265 是淘宝和阿里云共同发起的 HEVC 编码器,目前已经实现集团内部的开源,并落地在点播、直播会议等各个场景中。相比起业界优秀的 HEVC 编码器,S265 在 PSNR 指标上有比较大的优势。首先在编码工具提升方面,我们做了大量工作,实现了 HierarchyB、GPB、Bi-Search、Longterm、RDOQ、AdaptGOP 等编码工具,并且对这些工具进行了大量的算法和速度优化。

我们还设计了 50 多种快速算法,比如说 Deblock 的优化,编码速度对比 X265 有 1 倍以上的提速。在工程上的优化,我们做了浮点转定点、位宽的缩减、SIMD 的优化、冗余去除、访存效率提升及循环展开等等来提升我们的编码速度。

在框架方面,我们还做了线程调度优化等等。在码率控制方面,我们对帧级别码控和块级别码控分别进行了优化,并且对 2pass 编码进行了原创性的优化来提高 2pass 编码的质量。在块级别码控中,我们设计了新的 CUTree 和 AQ 算法。

淘宝直播三大核心技术揭秘

下面来看一下 S265 的几个典型优化,首先是 CU 划分决策,我们把 CU 划分决策模块分成两个步骤,一是纹理强度决策,通过计算 CU 的纹理梯度来判别平坦块和复杂块,如果是平坦块就直接退出,如果是复杂块就继续向下划分。

第一步可以解决大部分块划分的决策问题,但是对于模棱两可的块,则需要依靠 CNN 模型来辅助划分。我们使用了一个 5 层网络的小模型把决策的准确度从 72% 提升到了 96%;这个成果我们跟清华大学刘老师合作发表了一篇论文,在 DCC 会议上展示。

淘宝直播三大核心技术揭秘

第二个方面的优化是运动搜索方面的优化。运动搜索是从参考帧寻找最佳匹配块的过程,包含整像素搜索和分像素搜索,分像素需要做 7 抽头或 8 抽头插值滤波,计算量大;整像素搜索已经有比较多的快速算法,比如菱形搜索、六边形搜索及分层搜索,但分像素搜索一直没有什么好的方法。比如在图中矩形的整像素周围,分布着 60 个分像素点,如果要对分像素点进行全部搜索的话,需要 60 次,经过优化之后一般需要搜 4 个、8 个或 16 个点,但搜索次数还是比较多的。

我们采用一个二元二次误差平面方程,用 9 个整像素点的预测误差来求解方程的 5 个系数,再对方程求偏导,可得到最佳分像素点的位置。只需对这个最佳分像素点计算 1 个 1/4 差值,就可以完成我们的搜索过程。这个技术在编码器的整个提速有 12%,但 bd-PSNR 只有 -0.016db。这些成果在 VCIP 2016 上可以看到。

淘宝直播三大核心技术揭秘

第三个是我们的码率控制。ABR 是较适合直播的一种码率控制方法。但 HM 中基于