找回密码
 立即注册
LiveVideoStack 首页 资讯 查看内容
  • QQ空间
  • 回复
  • 收藏

腾讯视频全网清晰度提升攻坚战(2)

2018-6-7 09:30

解码端战线


解码端:HEVC坑较多



接下来讲讲我们在移动客户端上做的一些工作,前面提到,现在大家处于从H.264到HEVC的大升级背景,相信在座许多人实际在走这条路时,会发现坑非常多,这里列了一些比较关键的东西,比如说在Web端,HEVC的支持是不如人意的,甚至是非常糟糕的。Apple体系对于HEVC的支持在iOS11发布之后,已经有了明确方案。但是对于开发者来说,一个比较痛苦的事情在于它对HEVC的支持、在HLS协议的扩展上,苹果并没有沿用H.264时的MPEG TS封装,而转向了fMP4的封装格式。大家甚至会猜测,下一步是不是干脆就倒向MPEG DASH,当然,这都是后话了。眼下现实的问题是:国内视频服务商基本都是用的HLS+MPEG TS存储,后面如果要在苹果系统上使用HEVC片源,还得考虑额外转一份fMP4格式的版本。


安卓的坑也不少,比如说对于解码能力,首先是现在的HEVC硬解覆盖度还不够,稍后会讲一下目前实际的数据,另外对于格式我们也遇到了一些问题,比如说跟电视厂商合作时,发现很多厂商对HEVC的支持都是默认的HLS+MPEG TS封装。大家自然比较开心,如同约定一样,都朝着这条路走。结果有一天,在和某品牌厂商项目合作时,发现他们的播放器是不支持HLS+MPEG TS+HEVC的。跟对方工程师去沟通,他们说,你去看一下Google自己的开发手册,对于HEVC搭配的封装格式,Google在开发者手册上指明的是MP4。而对应的对于HLS协议的支持,Google又指明是MPEG-2 TS media files only。所以,对于一个严格遵守Google Android规范的厂商,理应不支持HLS上的HEVC播放。这样的文字游戏、明坑暗坑都让人非常痛苦,因此对我们播放器的挑战比较大。


播放器的演进:整体外包型



下面先讲下我们在播放器整体架构上的一些思考,也可以说架构是如何逐步演进的。最早期的时候,最直接简单的办法就是无论针对Android还是iOS平台,使用系统提供的播放器解决方案,简单进行业务封装就好。现在很多不以视频播放为主要业务的APP产品,可能就是这样的方案。Android平台提供了MediaPlayer组件,iOS平台有AVPlayer组件,如果不是特别复杂的业务,给个片源基本上都能播起来。


但实际去深究的话,如果长期在这个行业摸爬滚打,就会发现它的问题非常多。比如需要繁琐而复杂的版本适配工作,像刚才Android平台上我们已经举了一些例子,对于流媒体的传输协议也没有办法做到统一。因为我们的用户群分布比较广,大家的手机版本千差万别,早些年有的手机上可能HLS协议根本就不支持。对这种比较低端、边缘化的设备只能推送HTTP MP4的码流。由于流媒体传输协议很难完全统一的,相应的对于后台的存储也很难去做到统一,同一份片源不同的封装格式就需要各保留一份。


另外对于一些基础的播放体验也难以把控。之前与很多业务方合作时,这样的问题我被人问过不下一万次,他们会非常严肃地问我:这个播放器播我们的视频文件要花多长时间能够把视频播放起来,要花500毫秒、1秒、还是1.5秒?如果我告诉他,从统计上来看,需要花1秒钟可以播放起来。他会详细地再问你,下载数据花了多少毫秒、把视频数据解码出来花多少毫秒、解码出来之后,是马上去渲染还是做一些缓存,然后再去做渲染,这个时间又花多少毫秒。很多合作的伙伴,会一级一级抠这些细节。但是非常遗憾,如果纯粹用这样一种模式来做播放解决方案,上面的问题几乎都是没办法回答的,因为没有办法细致地掌握播放器里面的细节,没办法知道它一定要下载多少数据之后才开始播放。在完全黑盒状态下,类似这些问题确实是无法精确回答的。


播放器的演进:流控代理型



另外一个问题是潜在的流量浪费,很多播放器会尽可能多地去下载一些数据,以应对网络的变化,而实际会预下载多少数据,应用者难以控制。为了解决上述的一些痛点,现在大家能够进化到的一个方案,就是在播放器之上做个本地代理,可以看到业界有很多团队,都差不多用这个方案来做,图中右边黄色标记的是能够部分程度解决的痛点,绿色标记的是基本上能够全部解决的。我们一个个来分析下,比如刚才说的会做比较复杂的版本适配,这个能够一定程度地解决,因为可以通过代理模块,对播放器不支持的协议或者格式去进行实时的转封装。但是像Codec的能力缺失,比如不支持HEVC解码的手机,代理模块是没有办法的。


另外对于传输协议这块基本上能够比较好的解决,只要协议格式的转换不涉及到二次编码,单纯IO读写的代价其实是比较小的,以代理的方式进行透明转换就能够很好的解决。但对于基础的播放用户体验,可能还是无法彻底解决,因为对于整个播放器仍然是黑盒。对于流量控制可以一定程度上限制,因为实际去连CDN、去连后台是代理模块,这样能够把播放时下载的数据流量进行控制。但是加了一个红色标记的风险项,就是对一些比较奇葩的机型,可能需要去研究播放器的行为,避免本地代理和播放器配合的问题导致播放出现异常。对于配合者角色来说,比如要预下载多少数据、要把这些数据怎么填充给播放器,可能都需要去逆分析播放器的行为。


播放器的演进:跨平台框架型



我们刚才讲的第二种架构,通过一个本地代理虽然能解决很多问题,但还是遗留了一些技术死角。目前我们的做法是实现了一个跨平台的统一播放框架,将整个播放流程进行了三个环节的分离,包括:协议、数据以及呈现。可以看到在协议层,是与平台完全无关的;在数据层,需要最大程度地挖掘系统硬件能力,以提高解码性能,所以这个层面与平台有一定关联。在呈现层,在实施图像或者声音的后处理算法上,跟平台也没有特别的强相关,当然在iOS上利用Metal可以获得更好的开发封装及性能表现。有了这样分层式的设计和解耦实现后,可以最大程度地去打破平台对播放的黑盒效应。



再讲下几个细节层面的做法,早上的时候也有兄弟在问,说针对硬解中不可逾越的兼容性问题,有没有一些改善性的办法或者策略。其实业内大家的思路也比较类似,比如预先对机型能力会建立模型。这个模型会根据包括CPU芯片的指令集、架构、内存、主频等等参数,多维度地评判打分,然后根据这个分数来控制该机型能够支持的最高清晰度及后台下发的视频格式等。得益于我们的统一播放框架,针对完整的播放环节,我们进行解耦、拆分和监控。比如说解码时,可以精确到硬件decoder在解码每一帧上的耗时。现在我们提供的片源一般都是24、25 fps,所以我们就能根据硬件decoder的表现,看看能不能达到25 fps的要求。再举例,当整个APP发生Crash的时候,我们会去捕捉Crash异常,并分析Crash堆栈里面有没有包含和硬件解码相关的模块组件。我们还会通过很多渠道去建设设备的黑白名单,能够有效控制个别厂商或者机型上使用H.264或者HEVC,甚至包括HEVC的清晰度,以避免出现黑屏、死机这样的异常。


细节提升:HEVC decoder汇编



接下来讲一下主观质量增强方面所做的工作,前面提到解码更多是编码的逆过程,对客观质量并不会直接提升,但针对用户主观质量,我们可以引入一些图像后处理算法。比如对于有色彩障碍的用户,我们尝试进行一定程度的纠正工作。根据医学统计,色弱色盲人群在所有人群当中,大概占到了2%到6%的比例。以腾讯用户的基数去算这个6%,就是有很多的用户在图像色彩方面有一定的困扰。我们找来了部分这样的用户,来公司通过面对面访谈及体验的方式来帮忙我们去改进算法。针对一些比较特殊的片源,如蓝绿色彩区域较多、且有一些剧烈运动的场景,我们有效地提高了长时间观影的舒适程度。


细节提升:最后的10ms、主观质量增强



我们对片源也会做一些类似磨皮跟亮白的处理,现在讲到这个,美颜在行业内几乎已经是标配。但是对我们来讲,技术上比较有挑战的是,我们的业务场景更多是发生在影视类长视频上。相比直播的场景,或者点对点视频聊天的场景,我们的视频画面内容复杂太多、且变化也很快,对技术方案的适应性要求会高很多。


日常监测:热点追踪



在播放器日常监控方面,我们会拿内部云平台上的兼容性覆盖机型对现网的热点视频跑自动化的测试用例,以便发现片源是否存在播放异常,这样帮助我们及时发现类似时间戳不连续、音视频track切片长度不对齐这样的异常。


有些同学比较关心的HEVC硬解问题,我们也会保持日常性的关注,会跟进每天外网下硬解和软解覆盖的比例情况,目前来看比例大约是60%到70%左右。


日常监测:厂商能力标准化建设



最后谈下在设备厂商播放能力这块,我们也在学习和借鉴国外同行的经验,比如Google和Netflix对于合作的OTT厂商会去做非常严格的测试和认证。我们现阶段的工作还谈不上到了“认证”这种程度,不过我们希望把这个流程做起来。我们希望建立标准的测试用例集合,给到设备厂商,用于他们的研发和测试环节,比如对于合作设备厂商产品的解码器能力,要符合我们的要求,这样最终能为用户提供更可靠、更有保障的终端视频体验。



LiveVideoStackCon 2018讲师招募



LiveVideoStackCon 2018是音视频技术领域的综合技术大会,今年是在10月19-20日在北京举行。大会共设立18个专题,预计邀请超过80位技术专家。如果你在某一领域独当一面,欢迎申请成为LiveVideoStackCon 2018的讲师,让你的经验帮到更多人,你可以通过speaker@livevideostack.com提交演讲信息。了解大会更多详情,请点击http://beijing2018.livevideostack.com访问LiveVideoStackCon 2018官网报名,即刻享受6折优惠。

原作者: 李大龙 来自: LiveVideoStack
文章点评
相关文章