许键树:华为云视频直播在各细分场景的体验指标优化实践
Posted LiveVideoStack_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了许键树:华为云视频直播在各细分场景的体验指标优化实践相关的知识,希望对你有一定的参考价值。
点击上方“LiveVideoStack”关注我们
本文来自华为云媒体服务直播产品经理 许键树在LiveVideoStack公开课的分享,结合华为云在直播领域的实践经验,详细解析如何对直播卡顿率、秒开率、延迟等关键指标进行深度优化,以满足各类直播场景的不同诉求。
文 | 许键树
整理 | LiveVideoStack
许键树
公开课
本次由我为大家分享华为云视频直播在各细分场景的体验指标优化实践。
内容主要分为三个部分,首先是互联网行业直播发展过程,其次是华为云视频直播的优化实践,最后是视频直播未来的展望。
01
直播行业的发展阶段
从2010年YY直播商业化的成功,到2015年诸多游戏直播平台的兴起,宣告着网络娱乐表演为主的直播时代初步崛起,并且随着移动互联网的到来,为后续直播的发展奠定了良好的环境基础。
接着是2.0时代,直播行业迅猛发展,以映客、斗鱼为主的游戏直播平台迅速发展,掀起了“千播大战”,在这个节点监管规则陆续出台,行业步入规范化。
最后,以2019年电商直播的兴起,宣告着“直播+”时代到来,直播平台更加丰富,场景更加多元化,直播成为一种未来在社会的新型基础设施,直播3.0到来了。
2020年8月,人民网舆情数据中心发布了《互联网平台“直播+”赋能研究报告》,报告中指出“直播+”全面赋能各行各业,直播内容不限于游戏等娱乐内容,疫情期间衍生了云综艺、云游玩和云音乐会等新模式,直播平台的用户和使用时长大幅增长。2020年底,直播用户规模已经突破6亿,2021年6月用户规模达6.38亿,同比增长7539万,占网民整体的63.1%。
特别是受大型体育赛事陆续重启、直播技术持续发展和用户对于付费模式的逐渐认可等多方面因素的影响,2021年上半年体育直播有所回暖,字节和快手等大型互联网企业先后与海内外体育赛事版权方达成合作,冬奥会、中超联赛、美洲杯等赛事的网络转播权均在上半年达成交易。
02
华为云视频直播在不同场景下的优化实践
上文提到直播已经覆盖了许多行业和场景,那么接下来将和大家分享华为云视频直播在各个场景下的优化实践,其中以泛娱乐直播的体验优化为主,此外还会介绍包括广电媒体直播、教育直播、电商直播、沉浸式直播和海外DASH直播等的一些解决方案。
2.1 泛娱乐直播体验优化
目前,公有云的直播服务也被称作标准直播,多采用RTMP/HTTP-FLV和HLS三个协议。其中HLS的播放基于M3U8和TS文件,本质是文件的下载,而RTMP/HTTP-FLV都基于帧的流式分发,相比HLS能够更好地根据网络情况控制分发直播内容,延迟相对更低,更适合于泛娱乐直播业务对于直播体验的要求,又因HTTP-FLV基于HTTP,有较好的防火墙穿透且更易调度,所以目前泛娱乐直播多采用HTTP-FLV作为媒体协议。体验关注点分别是秒开、卡顿率和延迟(指标定义如图)。
在了解优化实践之前,先介绍一下华为云直播服务的数据发送逻辑。
边缘节点首次收到用户请求被称为起播阶段,此时直播服务回源向上游节点获取对应流的数据,存放到回源缓存里,回源缓存是个队列并缓存一定量数据,方便发送给用户从而对抗网络抖动;其次是分发阶段,直播服务会将回源缓存中的数据copy到播放发送缓冲区,进而发送给TCP发送缓冲区,直至用户的播放缓冲区。
其中,播放缓冲区和TCP发送缓冲区都与用户相对应,图中可以看到如果有用户B/C/D,那么相应会有播放缓冲区B/C/D及系统的TCP发送缓冲区B/C/D。
秒开在服务端的优化主要有两点,第一点是提供HTTPDNS的服务,用户侧可以通过HTTPDNS提前获取直播节点IP,播放器播放直播流时就可以省去DNS解析的耗时,直接通过HTTPDNS的结果向直播节点请求内容。在此过程中,HTTPDNS需要做流媒体的调度以保证非手势请求正常流的用户可以省去回源的阶段,直接访问有数据的节点。
第二点则是GOP缓存,熟悉直播的同学都知道I帧才能独立解码,那么为了播放器快速出画面达到秒开效果,直播服务要做GOP缓存并在收到用户请求的时候直接发送整个GOP。(右图为GOP缓存流程)
结合直播服务发送逻辑,我们可以知道网络拥塞导致卡顿的过程如下:当用户在弱网环境,网络出现拥塞时,数据发送耗时长或者根本无法发送,导致播放器缓冲区没有可供播放的新数据,用户的主观体验上就会出现音视频卡顿,甚至有些播放器会重复播放仅有的数据,出现死循环一小段音视频内容的现象。
直播服务能够统计播放缓冲区的发送速率和回源速率,当下游的用户播放缓冲区出现拥塞后,TCP缓冲区开始积压,直播服务的播放缓冲区Out Queue数据发送速率也会随之降低,回源速率却要维持正常以满足分发需求,此时的播控降档策略为周期性统计播放缓冲区发送速率及回源速率,当发送速率低于回源速率时,通过丢帧操作精确控制数据发送量,确保数据及时发送,防止拥塞进一步加剧。
针对网络拥塞导致的卡顿,华为云的优化策略分为三部分:协议栈优化、拥塞算法优化及播控策略。
协议栈优化包括TCP优化及使用QUIC,拥塞算法优化包括使用BBR/Reno/CUBIC等。这两部分的协议能力都由华为自研的nStack协议栈提供,nStack协议栈支持gQUIC和iQUIC,并针对音视频播放的场景进行了拥塞控制算法、数据帧优先级调度等多个方面的优化。有兴趣的同学可以关注后续的分享。
播控策略分为三小点:基础丢帧策略、出队列丢帧(播放缓冲区丢帧),丢帧保护策略。
基础丢帧策略包括保底丢帧和GOP丢帧,前者是为回源播放缓冲区设置阈值,超过阈值后进行丢帧。上文提到I帧和参考帧的关系,B帧P帧无法独立解码,GOP丢帧为开始丢帧后,需要从非参考帧连续到下一个I帧以确保内容不花屏。
出队列丢帧稍后会做详细介绍,主要包括超时丢帧、发送队列满丢帧及联合丢帧。
丢帧保护策略,由于音频数据不同于视频数据,I帧占据视频数据的绝大部分,如果I帧占比过大,此时丢其他非参考帧会导致整个播放画面非常卡且没有实际补救效果;自定义丢帧保护支持丢帧时长,如在客户允许下为半个GOP,不允许整个丢,那么就会从后半个GOP开始丢帧来确保前半个帧可以播放,此外还有纯音、视频、纯I帧等特殊类型的直播流可以支持自定义丢帧,通过开关控制特殊流是否启动播控策略。
因视频帧数据远大于音视帧数据,此时通过丢弃视频帧,确保音频数据及时发送,虽然会导致画面跳变,但是能够保证播放器至少有音频数据可以连续播放。
由于I帧大于非参考帧,结合整个音视频数据的情况,我们需要一个播控降档的过程——周期性统计数据发送速率和回源速率,图中的全速码率为能够支持正常分发的码率,每隔一个GOP记录发送数据,如果发现发送速率低于回源速率,会进入P档,循环往复后发送速率依然低于回源速率就会进入纯I帧档位,甚至进入纯音频档位。现实中用户的网络情况多变,可能抖动一下突然恢复,那么要随之进行升档,从纯音频档位恢复到I帧档位,甚至恢复到不丢帧状态。
图中为播控降档要实现的效果,可以看到拥塞阶段用户带宽降低,如果此时依然保持原来的发送码率,会导致用户接收的数据积压,进而发送失败、异常,导致播放缓冲区耗尽造成卡顿。
播控后的理想情况是通过调整发送量,尽量贴近用户带宽,实现用户播放流畅。
上文提到的出队列丢帧也是丢帧策略的主要逻辑,实质是播放缓冲区的丢帧。
发送超时丢帧是当数据从播放缓冲区发送给系统的TCP发送缓冲区时,如果触发了e-again时间,就需等待下次写事件,或是写成功,持续写入。如果发送耗时超过阈值且通过检查容忍条件,则根据超时时间计算丢帧数,在Outq队列中进行丢帧,图中“n秒”可以根据实际情况比如不同的直播码率等进行设置。
联合GOP丢帧是将时长较短的多个GOP组合成一个联合GOP,将原来每个GOP触发的丢帧,聚合在最后的几个GOP中进行丢帧。图中每个GOP为2s,那么临近两个GOP都需要丢帧时可以将它们组成一个联合GOP,在4s内丢掉之后需要丢掉的帧。此过程实现后的效果是在丢帧数量不变的前提下,减少丢帧次数,使得播放器视频渲染卡顿次数减少而降低卡顿率。
发送队列满丢帧为如果发送队列缓冲区积压了n秒数据(“n秒”为设定的阈值),则触发Qutq队列丢帧,丢弃当前正在发送的GOP数据。
需要注意的是为了保护起播阶段误触发丢帧,会在回源已经收到k秒数据的前提下才触发丢帧。因为开始时起播阶段TCP发送缓冲区是空的,这时需要有起播阶段的保护措施。
图中为完整的播放降档过程,从初始状态开始周期判断发送速率和回源速率大小,发送数据时进行超时判断,这些情况都触发后会丢弃正在发送GOP中的非参考帧,即进入丢P帧档位;如果拥塞持续,发送超时超过了容忍判断,随之会进行发送队列的满丢帧,丢弃整个GOP。与此同时可以根据配置选择是否开启联合丢帧及上文介绍的丢帧保护策略等。
数据发送包括起播阶段和分发阶段,在分发阶段,我们将回源数据copy到发送缓冲区,进而发送给TCP发送缓冲区,直达用户的播放器缓冲区。播放区缓存的数据以GOP为主,如图在起播阶段,播放器缓冲区如果有GOP1、2,那么在分发阶段将数据发送给用户时,可选择从GOP1或2开始发送,如果从GOP1开始发送,整体延迟为2个GOP,如果从GOP2开始发送,整体延迟只有1个GOP。
2.2 教育电商直播
在电商直播、赛事直播和直播大班课等场景,除了使用泛娱乐的直播方案,华为云提供超低时延直播产品,可以把端到端时延降低到800ms以内,让观众在这些场景下拥有更好的直播体验尤其是在延迟方面。同时低时延直播产品还兼容传统直播,可以无缝切换,如图中所示,支持以RTMP协议进行推流,分发时保留传统直播的传统协议的同时还支持超低时延协议的分发。
2.3 广电媒体直播
介绍新闻广电直播方案时不得不提到SRT。是一种基于UDT协议的开源互联网传输协议,解决了复杂的传输时序问题,做到支持高吞吐量文件和超清视频的实时传输。关于SRT的详细介绍,有兴趣的朋友可以网上找资料查阅。
SRT是安全、可靠和传输英文(Secure/Reliable/Transport)的缩写,顾名思义具有安全、可靠和低延迟三大特点,所以在泛广电领域内的应用较早,在很多技术区域都在使用SRT技术。以新闻直播为例,首先从拍摄机位的信号来说,传输到直播车或演播中心,都可以使用SRT。以前都是使用卫星或者光纤之类比较昂贵的传输方式将制作好的直播内容传输到电视台,现在可以通过公共互联网使用SRT技术来实现。在电视台播出之后传给各个分发商,这些分发商包括传统的有线网、上星站、无线覆盖或者直接对接直播CDN。
而华为云视频直播产品支持SRT上行推流,用户可以使用支持SRT协议的机架式推流器或者移动直播背包(华为云有对应合作厂商),通过SRT协议将直播内容推送到华为云直播服务,华为云直播服务会将SRT协议转换成RTMP/HTTP-FLV/HLS等协议进行直播加速,可应用于新闻直播、广电传媒等行业。
2.4 沉浸式直播
华为云部署了VR和自由视角直播中心,针对直播内容进行实时处理,比如高清低码的转码、虚拟视角合成等,并提供SDK供播放设备集成,提供一站式端到端的解决方案。目前已经实现了P40的VR直播和央视春晚的自由视角(具体效果可以在相关网站体验,可以随意切换直播视角)。
2.5 海外DASH直播
上文提到国内厂商较多使用HTTP-FLV协议,而海外更多使用HLS/DASH,特别是DASH协议。
针对DASH协议,华为云视频直播支持CMAF-DASH的方案,可以将直播延迟降低到3s以内。CMAF(Common Media Application Format,通用媒体应用格式)是由苹果和微软邀请MPEG开发的协议,用于在HLS或CMAF上进行自适应直播,它统一了容器格式:在CMAF之前,HLS和DASH使用不同容器内容,分别是.ts和.mp4,CMAF统一格式后,HLS和DASH都可以使用.mp4,并且支持分块编码降低延迟。
上文提到的协议包括RTMP/HTTP-FLV/WebRTC/DASH-CMAF/LL-HLS/SRT,图中为不同媒体协议的特性对比,包括延迟、吞吐能力、跨平台能力以及厂商支持等,不同的媒体协议适用的场景不同,华为云视频直播相应提供适配不同场景需求(泛娱乐直播、教育电商、广电场景下的SRT上行等)的解决方案,助力用户获得更好的直播体验。
03
视频直播体验的演进
随着5G等通讯技术以及硬件设备的发展,另有用户对于直播体验愈发真实的诉求,视频直播会向更实时、更清晰、更沉浸的方向前进,华为云实现的低延时直播、360°VR、自由视角等超清视频直播也会以以上三点为目标不断发展进步。
以上是本次的分享内容,谢谢!
扫描图中二维码或点击阅读原文
了解大会更多信息
喜欢我们的内容就点个“在看”吧!
以上是关于许键树:华为云视频直播在各细分场景的体验指标优化实践的主要内容,如果未能解决你的问题,请参考以下文章