编者按:从带来更高编码效率、更好的用户体验的京享高清,到直播架构与网络演进优化,从而为用户带来更流畅的观看体验,以及运维系统的异常自动修复和高弹性的多媒体存储架构,一层一层展示出复杂而有序的多媒体技术框架。本文是对在LiveVideoStackCon2019北京的京东云技术专场的内容回顾。
01复杂网络下底层编码技术优化提升用户体验
张树军京东云架构师
复杂网络条件下如何为用户带来更优质的视频观看体验,这个问题一直是音视频技术领域中的关键和难点。对此京东云从4个方面着手提升用户体验:从底层视频编码,“京享超清”技术提供了高质量、低成本的视频转码效果;针对复杂网络,端到端多码率切换技术保障直播、点播视频做到无卡顿、无黑屏;舒适音频让用户在多场景频繁切换中保持平和的听觉过渡,提升整体观看体验;并从文件预处理做好质量检测,减少无效转码,提前预知视频缺陷。
“京享超清”
张树军认为在当下视频清晰度不断提升和网络复杂度导致的卡顿、丢包的情况下,如何做到保证相同观看质量的同时尽量降低码率是音视频技术发展的趋势和关键。针对于高质量、低成本的视频转码,京东云在5个方面做了技术优化:图像和视频级的去噪、锐化,针对低码率视频的插帧处理,针对用户感兴趣区域的画质增强,分类场景的编码优化以及与AI结合的视频编解码处理。
特别一提的是,通用的去噪都是针对于图像级和空域级,是在YUV和RGB上做处理,其实这种处理是对所有块都适用的,然而视频是有块属性和运动属性的,因此京东云对指定的帧类型或宏块类型的区域,结合现有的单通、双通、DCT等去噪算法做优化,实现对某一帧或宏块类型的自适应去噪。除此以外,京东云还结合AI技术,识别、分析视频场景和用户感兴趣区域,针对不同场景和区域采取不同的编码和码率控制策略,达到在同等质量和观看体验的前提下,为用户和客户降低带宽成本。
面对国内用户复杂的观看网络条件和设备多样化,尤其是用户在不同网络间切换出现的网络抖动情况,很难采用统一的转码策略满足所有用户的观看体验需求。张树军表示京东云目前采用端到端的多码率切换技术来解决这一痛点,包括点播和直播场景的多码率切换对齐。
常规的多码率切换对齐方式主要有Segment、GOP和帧级三种:Segment相对而言是最简单的IDR对齐方式,在客户端和Server端的处理最为方便,但同时也是切换速度最慢的;相对于Segment,GOP则可以做到更精细,切换速度也更快,但由于GOP固定,有人为因素干预编码,从而导致最终质量下降;帧级切换鉴于是逐帧编码,切换速度最快,但同时对用户终端和网络要求也会更高。因此京东云针对点播和直播场景做了优化。
舒适音频
我们经常可以在体育赛事或者演唱会中遇到一种情况:多个不同环境下的场景频繁切换导致音量忽高忽低,对于用户的听觉体验造成极大影响。针对这种情况,单项增益和常规均衡化会导致原声失真、低音效果差和失去原本声音高低效果。京东云对于多场景切换的音频,首先会做音频的整体分析,并根据自定义的舒适区判断音频是否需要动态调整使其达到较好的收听体验。
02以存储为中心提升高性能、高可用、低成本直播服务
崔灿京东云架构师
伴随视频画质和需求的不断提升,视频容量、数量的增多以及容量和带宽的弹性扩展成为视频云服务厂商面临的一大挑战。与此同时,用户对于高画质、高流畅、无卡顿的观看需求的提升,也对低延时在线上传以及高吞吐的离线处理性能提出了更高要求,而由此带来的数据成本与数据安全问题也不容忽视。
海量视频存储系统
针对上面提到的挑战,京东云是如何做到百P级别存储服务的?对于一个经典模型——一个中央节点组成大目录树,下面是很多数据节点存储数据,类似于HDFS,实际上这个架构就可以满足视频存储的基本需求——视频上传、下载,但是在所承载的文件数量和容量上仍是无法满足,同时这种树形结构在磁盘访问、扩展性和中央节点管理磁盘能力上的表现并不好。
因此,京东云构建了一套基于KV结构的视频存储系统,对NameNode从功能上做简化,将目录拉平——每一个文件名对应文件数据位置,用MetaService管理文件名到文件数据位置的映射,由此可以看作为一个有效数组存储在多个集群中,元数据通过Meta调取不同集群中的数据,这种结构也更易于扩展。而在DataService中,每个集群中的每个数据都对应唯一的ID(这个ID存储在元数据中),相当于一个flv文件映射为不同集群中对应ID的数据。这种多后端集群存储还具有一个优势——针对不同类型的数据可以在不同后端进行存储,比如类似m3u8这种需要频繁访问的文件可以放在SSD集群,ts文件可以放在标准存储集群,视频的冷备份可以放在EC集群,转码的中间文件可以放到RRS集群。
基于公有云的点播服务
对于点播或者直播服务,高吞吐、低延时的性能、高可用性以及成本优化成为了关键。京东云基于公有云的点播服务中,用户从云主机(业务系统)请求上传链接,这个上传链接对应存储链接,用户直接通过客户端上传数据到对象存储服务,再通过异步处理机制触发业务逻辑(如转码、鉴黄),处理完成后上传到对象存储服务通过异步处理机制触发自有业务系统(如媒资管理等),最后生成链接通过CDN分发。
03多核心协同拓扑CDN分发网络架构演进
刘军涛京东云架构师
视频直播不同于传统的点播和网页加速,它对延迟和卡顿更加敏感,并且具有极其明显的流量突发特点而国内网络接入的又十分复杂,除了三大运营商,还要对小运营商、教育网等做CDN优化。下面将着重针对CDN网络架构实践、演进与性能调优方面进行讲解。
CDN网络架构演进
对于一个直播云架构而言,核心诉求集中在高可用、易扩展、高性能三方面,在这一背景下,我们首先需要挖掘单机或单节点的性能潜力。京东云会将每个节点抽象为虚拟的两层,在节点内部的边缘上通过轮询的方式将流量打散接入,如果出现突发流量可以充分利用每个机器的能力,在流量打散后内部通过哈希汇聚到内部逻辑的二级源,再由二级源做真正的回源。当有多路流时可以合并回源,减小回源带宽,同时有效减少它们内部的交互成本。
直播分发服务性能调优
04大规模、高可用直播平台架构:提升性能+降低成本
王孝庆京东云架构师
直播平台是基于端到端的处理,京东云是如何基于前面提到的底层高性能视频编解码、大规模存储、性能保障和CDN链路优化之上构建更友好的直播服务?下面将通过直播产品化高可用方案和性能提升详细讲解。
直播产品高可用方案
在推流质量和稳定性保障方面,京东云在链路选择、推流加速、多源站部署、稳流/预处理和多种推流模式5个方向优化,首先在推流链路选择上提供应用更为广泛的边缘CDN节点和质量更高的源站直推两种,边缘收流后会通过CDN加速中转到源站,并且通过多源站部署保证源站稳定性,同时提升推流性能,而稳流和预处理则更好的保证了生产系统和输出流的稳定性,以及对不规范的流进行规范化处理和修复。
除了推流质量保障,如何通过技术手段保证系统生产过程的稳定性?从设计体系角度我们通过模块化、配置化和监控体系来完成直播流的稳定生产。目前京东云采用微服务架构,每个模块独立部署,高内聚低耦合,当某些模块出现故障时,内部会采取服务降级或熔断机制,从而缩小故障带来的影响范围。在服务模块层,通过标准化+配置化设计满足不同需求,比如转码码率、分辨率等;在业务层也可以基于不同服务模块的能力进行封装达到不同应用、不同场景的定制化。而一个稳定的系统离不开完备的监控体系,当出现问题时如何快速发现、快速定位、快速修复。对于直播平台下的生产集群使用任务的方式管理,我们把某一任务的输入、处理过程和输出采用配置参数,通过调度系统将这个任务下发给一台机器进行生产,而生产的健康状况可以通过这台机器上报的数据进行实时监测、追踪和修复。
降低资源成本,提升平台性能
在底层技术优化基础上,从平台层角度,如何更充分利用资源,如何合理调度任务完成生产,让整个系统吞吐更大、速度更快、利用率更高,同样是“降低成本,提升性能”的重要一环。
依托京东集团的业务实践和技术沉淀,京东云视频云提供了端到端一体化服务,打通采、编、制、录、存、管、播等环节,让视频的生产和流转更容易,通过积木化的方式各项能力自由组合,满足客户对于视频业务的不同场景和需求。