在 5G 时代到来之前,移动通信技术已经经历了 1G、2G、3G 和 4G,视频产业在 4G 时代实现了突飞猛进,如短视频、直播、长视频、视频会议等形式的出现,使得人与人之间的沟通和交流方式从传统的语音、文字、图片等模式快速升级到视频。相应的,4G 时代全网视频流量已占到全网数据流量约 70%,而在 5G 时代,视频流量占的比例还会更高。
在 5G 时代,如 VR、3D 超高清实现等技术将被大规模应用,人与人之间的联系被拉的更近。视频比图片和声音有更强的表达能力,也符合信息传播的未来演进方向。
5G 时代来临在即,视频技术将会如何发展呢?基于视频云服务的技术开发又有怎样的变化呢?为此,InfoQ 邀请到京东云视频云产品研发部高级总监魏伟为大家详细解读。魏伟拥有 10 多年视频行业研发经验,先后从事于 AVS 标准制定、广电音视频系统、互联网视频平台、视频云服务平台的架构设计和研发工作,具有丰富的广电、互联网视频、视频云等行业的研发和管理经验。让我们听一听他对于 5G 时代下视频技术的理解。
一、通信和视频的基础原理
数字视频时代的起点在 80 年代,那时视频标准化从 H.261/MPEG-1 标准开始,主要采用光盘、VCD 等形式作为载体,分辨率只在 352×288;到 1993 年,MPEG-2 标准推出,开始进入分辨率为 720×576 的标清时代,主要载体是 DVD,高清蓝光视频也开始出现,但均是以离线传播方式为主;而到了 2003 年,随着 H.264 标准推出,数字视频进入了互联网时代,催生了点播、直播、短视频等应用形态,H.264 延续至今依然是主力的视频标准;在 2013 年, 4K 视频开始崛起,H.265 标准应运而生。每一代视频压缩标准相比前代,压缩效率均提升了一倍,编码复杂度也提升了很多。
当前我们所处的阶段视频是以 H.264 为主,4K 高清视频以 H.265 为主的时代。视频技术的变化,每 10 年更新一代标准,压缩效率也能提升 1 倍左右。视频的标准除了 ITU 制定的主力标准以外,自主知识产权的国产 AVS 标准也快速发展起来,还有一些厂商制定的比如 VP 标准、RM 标准以及现在免费开源的 AV1 标准。而面向未来的 VVC 新一代标准,如果顺利的话将会在 2020 年左右推出,其视频压缩效率将会比 H.265 再增加一倍,运算复杂度及运算量都将增加很多。
那么科普一下,视频是如何压缩的呢?视频是由一幅幅单独的画面(称为帧 frame)序列组成,每秒约 25 帧。每帧画面之间的差异很小,只需要对视频帧之间的差异进行压缩编码,即信息熵,相邻的画面之间、相邻像素之间的的相似冗余需要去除掉,即可得到一个较高的压缩比。但对于视频技术来说,还可以利用人眼视觉模型(HVS)进行压缩。举例而言,1080P 的视频,每秒假设有 25 帧,彩色视频有 RGB 三个分量,视频每秒的数据量为 192010803258=1244.16Mb/s,每秒就超过 1G 多数据,利用信息论去除前后相邻帧之间的时间冗余,再去除相邻像素间的空间冗余,再去除信元的统计冗余,再结合 HVS 做有损压缩,在不影响人眼主观感受的情况下,视频压缩可以达到 300 到 500 倍。
再看一下视频编码的过程,这里涉及到一些基本概念,上图就是一个视频压缩的经典技术框架。从最早的一代视频标准 H.261/MPEG-1 开始,到现在的 H.265/HEVC 乃至于面向未来的 VVC 的标准,其系统结构都是采用基于块的混合编码系统,涵盖了时间冗余去除、空间冗余去除、统计冗余去除、有损压缩等形成混合编码的结构。
每一代的视频标准都有一些共性的开发问题。比如帧结构和场结构,在帧结构中,一幅画面就是一帧;在场结构中,一幅画面是由顶场和底场两场组成。GOP(Group of pictures)图像组,需要把视频序列拆成 N 个图像组,每一个图像组里面包括了 Intra、带前向预测的 Inter,以及带双向预测的 Bi-directional。Intra 解决视频的随机接入问题,在任何一个 Intra 帧都可以开始接收和解码图像,Intra 预测目前也已经非常成熟,从 H.264 的 9 个方向到 H.265 的 35 个的预测方向,而在未来的 H.266 时代预测方向会达到 60 多个。
第二个就是 Motion Estimation 即运动估计,用来消除相邻帧之间的时间冗余。因为相邻帧间的图像会有一些轻微的运动变化,运动估计技术能把这些运动给“估计”出来;Motion Compensation 运动补偿是运动估计相反的过程,在解码过程中实现,解码时 MC 能重建出当前画面,避免传输整帧画面;视频编码有 Coding Mode Selection 概念,多种的编码模式根据不同画面内容进行选择,有多种算法进行快速实现。
再者就是 Transform 变换技术,进行正交变换把视频的亮度域变成频率域,将运动估计处理后的灰度域的像素点变成频率域表示,把高低频内容区分出来,方便去除人眼不敏感的高频信号,去除空间冗余信息。还有缩放和量化 (Scaling & Quantization) 技术,在做有损压缩的过程中,通过量化过程对高低频信号选择合适的量化阶把不敏感的内容去掉,量化和码率控制技术密切相关,通过调整量化参数,来实现每一帧视频的码率控制。码率控制又分为 CBR 和 VBR,CBR 是固定码率,即每一秒滑动窗的码率都是均匀的,主要是用在一些固定信道传输领域比如卫星通信,码率稳定。VBR 是可变码率控制,用在互联网传输方面,控制整体平均码率,但会根据视频每一段的复杂度来分配合适的码率,复杂区域高码率、简单区域低码率能够实现整体质量的均匀和整体平均码率的均匀。
二、视频体验的提升与评判
所有人都在追求更好的视频体验,那么视频体验究竟指的是什么呢?哪些办法能让用户体验更好呢?
像素更多,视频的发展从标清、高清、超清到 4K、8K 还有以后的 16K,像素越来越多,用户体验越来越好;
像素更快,以前的视频一秒钟只有 15 帧,现在逐渐发展变成 25 帧、30 帧、60 帧、120 帧,未来还会有 240 帧,360 帧,更快意味着更舒适;
更好的像素。以往,每一个像素是 8 个比特,以后像素质量会上升到 10 比特、12 比特、16 比特;
色域更宽广,色彩会更加逼真;
高保真的音频,音频压缩的难度比视频压缩更大,耳朵的灵敏程度远比眼睛要高。视频可以达到几百倍的压缩,音频的压缩也就几十倍,到 100 倍就已经是非常非常困难了;近年开始有全景声的概念提出,对于体验提升很有帮助;
更低的码率,虽然数据量越来越大,需要更高压缩实现更低码率来解决视频卡顿和传输成本问题;
更快速的起播,用户打开视频的速度要更快。
对视频质量的评价也有标准和方法,如今比较常见的方法有四种:
Rate-Distortion (PSNR) 峰值信噪比,根据 RD 值绘制曲线,曲线越高,压缩效率越高、质量越好;
SSIM,根据视频结构性、相似性进行评价,目前使用越来越广泛;
VMAF,把不同的视频、不同的分辨率,放在相同维度上以统一的标准来衡量;
MOS 人眼主观评价,这也是最权威的评价方法,也就是眼睛看着是否舒服。MOS 评分虽然是主观评价方法,但也是最客观的视频质量评价方式。
不论直播、点播还是广播技术,视频服务都可以分成四个层面:最底层是编码最内核的 Codec 层,其上层是 Container 封装层,再上是 Stream 码流层,最上层便是服务层。涉及到大量的行业标准,其中大多数标准是由 ITU 制定的,比如 H.264、H.265 标准,还有封装层的 MP4、TS 等标准。
很多标准都有开源代码实现可参考,比如 ffmpeg、VLC 等服务框架,就是比较全面的开源实现;X264、X265 对应的就是 H.264、H.265 两个标准的开源实现;Container 层也有 mp4box、MKV 等优秀的开源封装格式;在服务层,有 Nginx、SRS 等开源实现,在每一层都有对应的开源实现。音视频领域虽说不大,但是技术域从底层到上层种类繁多、技术栈从汇编到 go 语言非常长,此处列出的仅仅是其中小部分,还有大量的开源实现来支持视频技术。
三、视频技术到视频服务的处理
从视频技术变成视频服务,其间还有很长的一段路,除了视频技术本身,还需要进行服务平台搭建的工作,视频非常看重端到端的完整流程。在一场比赛直播中,从现场摄像机拍摄开始,经过网络传输和云端存储、云端编转码处理、经由平台层进行内容发布和媒资管理,还有网络资源调度、节点管理、线路规划、线路节点调优等 CDN 工作,还可能涉及百万级的并发均衡、P2P 内容分发传输,最后到终端播放。只有从采集到终端播放形成完整的链条,才能保证视频内容流畅高质量地播出。
对于视频服务提供商而言,想要提升端到端视频服务的用户体验,就需要在播放、平台、产品等多个方面提升。播放体验包括了秒起播、低卡顿、高清晰、高质量、低延时、唇音同步;平台体验包括了高效率、大并发、稳定可靠、可管可控、安全;产品体验包括了云化、标准化、服务化、可量化、可视化;音频体验包括了响度、音质等。
具体到京东云来看,京东云在视频 BD-PSNR 衡量标准上,不同分辨率对比其他厂商能再低 20% 到 25% 的码率,也就意味着能够帮助内容服务提供商降低 25% 的带宽费用,省下 25% 的成本。
这些数字背后隐藏着那些技术呢?目前,开发者可以基于京东云特有的视频编码能力,在保持处理速度不降低的情况下能够把视频压缩到相比于其他厂商更低 15% 到 20% 的码率上。并且,京东云提供极速处理模式,提供视频优质画面的前提下可以为客户降低带宽压力,同时保障处理成本不增加。京东云的对象存储的技术,可以对数据的安全性进一步提升,实现 9 个 9 的安全性,能够对存储的数据进行访问加速,并对视频进行定制优化。京东云 CDN 也进行了系统化的提升,包括资源建设,技术优化、运维监控、调度调优等,京东云提供了一张覆盖全国的 CDN 网络,能提供超过 20TB 容量的 CDN 服务,再加上客户端的处理技术,接入京东云的 SDK 后能在短时间实现功能丰富的直播或短视频应用。
四、5G 时代 VR 视频的展望
5G 到来以后,延时更低、带宽更大,比 4G 多了更多可能性,比如超高清视频、5G+8K 的视频均可以传输和实现,此外视频监控和 AR/VR 技术将更为受益;可明确预见的是超高清视频甚至超过 8K 的视频处理都将很快变成现实。
随着带宽的扩充、扩容,超高清视频是一定会实现,VR 也会成为新的焦点。那么,5G 来了是不是 VR 一下又能重新爆发呢?对此可以抱着谨慎乐观的态度。因为 VR 技术和相关产业并不是一个新兴产业,而是一个完整的产业链,很难像新技术一样瞬间火爆。事实上,技术圈对 VR 视频技术的探索比 5G 还要早,在 1968 年就已经在进行 VR 技术尝试了。所有人都希望能有更近距离、无障碍的交流沟通体验,VR 能够将人带到实际的场景中,获得沉浸式的体验。
在 5G 时代 VR 的发展到底会怎样?在 2016 年 VR 市场非常火爆,Google、Facebook 相继进入 VR 市场,硬件厂商如三星、sony、英伟达,视频公司如 YouTube,内容方面如腾讯、爱奇艺、乐视、暴风等相继加入;但是到了 2017 年和 2018 年,大家又变得非常理性了。背后的原因分析一下不难得出这一结论,阻碍 VR 技术发展的并不只是网络,而是整个产业链。
VR 的采集端是由多个无死角采集具有重叠区域的视频画面拼接而成的,他会把 360 度的视频拍摄下来;拼接的过程需要解决特征点匹配、多镜头同步、时间同步等问题,需要进行多镜头曝光校正、画面融合等操作,再把每个平面变成球面的画面还原出来才能完成。VR 视频的编码播放与前面所讲的视频播放技术、视频处理技术大体一样,从技术架构上来说,采集、拼接、编码传输这都没有问题,但真正不好解决是播放设备。因为 VR 是需要戴着头盔来体验的,眼前的屏幕离眼睛只有几厘米距离的时候,人是很容易就会眩晕。如何来解决眩晕感是 VR 普及最关键的因素,如果要在 VR 头盔上没有眩晕感,基本上视频分辨率需要达到 15K 左右,比现在 8K 还要再高四倍的像素,而在显示速度上,每秒 120 帧是必须条件,这样才可能避免眩晕感。
在显示屏方面,当年发布 iPhone 4 时提出了视网膜屏幕的概念,是指当屏幕距离人眼 25-30 厘米时,分辨率只要达到 300ppi(每英寸 300 个像素点)以上,人的视网膜就无法分辨出像素点了。而从 iPhone 4 到 iPhone XS 近十年都过去了,屏幕像素只是从 300PPI 发展成现在的 450PPI,发展速度相比晶体管显得非常缓慢。因为显示屏、液晶屏的发展与摩尔定律无关,速度远远低于数据处理能力的发展速度。如果 VR 想要达到不眩晕的效果,就得让 15K 分辨率和 120 帧帧率显示效果放进头盔里,屏幕需要达到 2560PPI,这无论是 LCD 还是 OLED 都很难达到。当然现在也可以期待像 microLCD 等更高质量显示技术成熟,来帮助 VR 产业进一步落地,但这显然都和 5G 时代关联并不大。5G 的低延迟、大带宽肯定会提升数据传输能力,促进 VR 的体验提升和发展,但 VR 的普及还需要整个产业链的提升,仅有 5G 还显得并不足够。
五、Q&A 时间
直播的时候遇到高并发,怎么监控质量?
答:这个是一个非常好的问题,大家遇到直播的高并发对于很多的服务商或者说对于很多的站点来说都是非常大的一个挑战,比如说你的直播有可能在 5 分钟之内就涌进来 100 万人到你的平台上来,但这个 5 分钟大家都知道观众分布是非常不均匀的,有可能密集地进入某个区域的某个节点。一个节点甚至说一台服务器上的带宽和服务能力都是有限的,如果说涌入过快的话,比如说瞬间一万人跑到你这一台服务器上来,那对于你的服务质量就会非常非常的不好做、不好管,我们怎么来做这种高并发接入和支持呢?
首先我们得有一个质量监控平台,接收云服务平台的上报,节点上报容量是多少、水位线是多少、连接数是多少,当节点到较大容量时就不能再使用比较粗放的 DNS 调图,而需要做一些全局负载均衡类似的调度方式,把每个节点的利用率都能提升上去;服务质量的监控还包括链路质量部分,在五分钟之内消化 100 万的并发需要均匀的分配到很多节点上去,需要结合链路质量通过调度平台选择不同的路由把访问量均匀分配下去。
服务监控质量也包括客户端的一些上报,客户端的服务质量上报包括卡顿比、下载速度、访问内容、访问时长等等,客户端的质量上报也涉及很多运营相关的数据。播放质量方面客户端也会有一些动态的调整,客户端(SDK)需要根据播放质量自动地刷新,包括服务节点、获取内容方式等方面的更新,通过更新服务节点来使质量变好。
总的来说,服务质量监控平台需要包括服务端的数据、客户端的数据,当然还包括各个控制面接口的服务质量监控,形成一个整体的视频播放质量的监控平台,方便做服务调优和故障处理。
在降低直播延时同时保证直播稳定方面有什么经验吗?
答:降低直播延时和直播稳定性都是对网络稳定性的挑战。直播的延时和卡顿率是我们一直非常重视,并且在不断优化的性能指标。延时要低,直播流的缓存时长就不能太大,但缓存少,链路如果抖动频繁,必然很容易出现卡顿,导致直播无法稳定观看。
在降低直播延时方面,我们内部会根据不同的链路节点选取 HDL 协议或者私有的 JRTP 协议传输视频流。同时我们开发了直播流智能缓存功能,可以实时监测每个观众的缓存积压情况,根据每个客户对延时的要求,进行动态追赶或跳变追帧功能,从而避免链路内容积压导致观看延时过大。在直播稳定性方面,我们在全网有链路质量实时探测服务,实时监测各个节点的丢包率、RTT、连通率,由于我们对视频流添加了自定义的 SEI 信息支持,所以可以在网络质量不稳定时,会进行动态选路,支持时间戳或帧级别的动态选路完美切换。同时根据我们的直播流智能缓存功能,可以实时监测各个链路节点在各个时间段是否存在数据积压情况,再根据我们的大数据平台分析各条传输链路在各个时间段的网络质量,我们可以持续的优化我们的全网智能链路调度系统,从而使得以后的每次链路调度更加稳定和智能。
延时方面还有直播协议的选择,rtmp 和 http-flv 的延时可以做到 3s 以内,明显比 HLS 的 10s 延时低,较低的延时又肯定对网络稳定性带来挑战。建议从完整的端到端视频服务来考虑,首先视频编码层面需要提高码率控制的稳定性,避免出现很大的码率波动,视频编码也必须保证实时性;视频 GOP 也在码率和图像质量允许条件下尽量缩小,也有利于降低延时;流媒体的发送缓存也做成低延时和低卡顿可调整的模式,方便对不同终端适配不同模式;CDN 层面也使用预分发加热方式把数据推送到离用户最接近的节点,方便快速获取;客户端方面也使用多连接下载的方式从多个节点同时获取数据,避免单节点的服务和网络波动;最后加强服务质量的监控,快速发现问题和快速调整服务质量。
视频防下载、版权保护有很好的方案么?
答:视频版权保护方面在会员服务、版权意识越来越被重视情况下,越来越被关注,总的来说可以分成链接保护和内容保护两个层面。链接层面主要有自定义鉴权保护、refer、黑白名单等等方法,现在也有通过访问行为分析来判断的方法,这些都是在链接保护层面。另外是内容保护方面,比较完善的是 Marlin、Fairplay、widewine 等等 DRM 保护体系,可以实现软硬件一体的全方位的内容保护能力,但成本极高,只在好莱坞等重大版权内容上使用。
京东云提供端到端的版权保护方案,使用 DRM 类似的密钥保护和数据加密方案,使用动态加密方式还可以支持动态地更新密钥和加密方法,服务端动态加密、客户端获取数据后解密再使用,可以实现高安全性的内容保护,即使加密算法和内容泄露之后还可以动态地更新算法和密钥,这些还不需要重新转码处理。
HLS+ 是怎么做的?
答:HLS+ 的核心技术是对 GOP 切片的再分段切片技术和实时动态生成播放列表的追帧跳变技术。首先我们需要对苹果的 HLS 协议有比较深入的理解,苹果播放器需要三个切片开始播放,并且 HLS 协议里有一个标识当前播放列表最大片长的标签——EXT-X-TARGETDURATION,它是整形,所以此值有效值最小为 1s。
综合 HLS 协议的限制以及编码、CDN 网络传输、解码等因素,HLS+ 一般能够达到 4s 左右的延时。我们想要达到最小的延时,切片就需要在 1s 左右,所以 HLS+ 第一个需要解决的就是在任意 GOP 的视频流里面进行合理的再分段切片,使得切片的大小在 1s 左右,并且要有 IDR 帧开头的切片标记,并且不能产生类似 0.3s 这样的小切片,需要将 gap 动态的抹平。
HLS+ 第二个需要解决的是在首屏播放后需要追帧跳变,追赶延时。这就需要针对每一个播放终端实时动态的生成播放列表,使得下载的第一个切片是 IDR 帧开头,以达到秒开播放效果,同时还需要在次过程中追帧跳变来追赶延时。由于每个播放终端是动态生成的播放列表,所以我们还可以针对不同终端的特性做针对性的优化。有了智能的再分段切片技术和实时动态生成播放列表的追帧跳变技术,HLS+ 就可以实现 4s 左右的低延时观看体验了。
有没有好的存储优化方案降低服务器成本?
答:存储技术这一个不是我的技术专长,我说一下关于视频存储降低服务成本的我们的一些实践。因为大家都知道视频的格式很多,比如说在移动端使用 HLS,然后下载播放又要用 MP4,然后有别的场景我又要用 TS,可能有一些场景还要用 FLV,格式很多意味着相同内容需要存储成多个格式的多份文件,成倍地使用存储空间。
京东云现在提供的服务里面我们会只保存成一个 MP4 格式,然后在不同端访问请求到达时实时转换为对应格式,我们做了一个动态的转格式服务,也就是 change-on-fly,从访问这个视频的时候转换成了你想要的格式。这样的话,我们通过动态视频格式的技术,在存储上只保留一份文件即可实现多种格式的访问需求,能够成倍的降低视频存储量,不再需要说为不同的终端、不同的场景再存储一个独立的视频格式,可以把所有的场景终端、所有的视频格式需求都通过一个文件加动态转换来实现。当然动态转换是有一些技术要求的,如何去降低转换资源开销是有比较高技术挑战,我们对此做了大量的深入的优化工作。
作者介绍:
魏伟,京东云视频云产品研发部高级总监。拥有 10 多年视频行业研发经验,先后从事于 AVS 标准制定、广电音视频系统、互联网视频平台、视频云服务平台的架构设计和研发工作,具有丰富的广电、互联网视频、视频云等行业的研发和管理经验。2018 年加入京东云,目前已上线直播、点播、媒体处理等视频云产品,并支撑京东商城等内外部客户的视频服务。
评论