一、概述
2019 年 vivo 直播平台立项,初期与优良的顶部直播平台进行联运直播开发,进行市场,产品和技术的初步摸索;再到起初为了丰盛直播的内容和模式,开始本人独立摸索;之后,咱们联合 vivo 现阶段的直播业务,陆续实现了泛娱乐,互动,公司事件直播等多种直播模式的落地,置信后续依据业务的布局,咱们会给用户带来更好的直播体验。
明天和大家分享一下,vivo 直播平台这两年相干的技术倒退历程,心愿大家对直播有一个根底的理解,如果有相干的同学刚刚开始从事直播相干业务的开发,可能给大家带来一些启发。
二、业务背景介绍
截止到目前为止,vivo 直播平台反对三个大类的直播,第一个就是经典的泛娱乐秀场直播,平台提供秀场直播一些规范的性能,例如互动聊天,PK,送礼等根底性能。泛娱乐直播市场起步比拟早,相干的性能玩法也比拟丰盛和多样,例如主播连麦 PK, 主播与用户连麦互动,礼物连击,事件榜单,你画我猜等等相干的娱乐性能,目前平台正在继续迭代相干经典的性能,继续给用户带来更好的用户体验。
第二种类型的直播就是目前基于实时音视频技术的低时延互动直播,低时延直播的特点就是互动性强,用户的参与感强,与之而来的就是较强的技术挑战和较高的保护老本。
第三种,就是目前在疫情的大背景下,诞生了公司信息散发的事件直播,例如公司年会,校招宣讲会直播,品牌文化直播,疫情防护常识直播。这类直播的最大特点就是灵便、多变、且内容形式多样。对于直播平台来说,咱们须要为其提供一站式的直播解决方案,不便公司利用直播这种模式进行更好更稳固的品牌,文化的宣发。
首先,咱们再来看下 vivo 直播平台的一个业务架构模型,底层是咱们的公司全链路监控平台,会对直播流量、网络、相干直播业务的数据指标进行监控,并提供相干告警服务,便于咱们可能第一工夫响应、定位并解决直播在各个模块在散发过程中遇到的一些理论问题。
在此监控之上,咱们进行下层业务的逻辑迭代。在直播内容的散发上,次要的形式还是依赖于云厂商的 CDN 和咱们外部的直播服务器集群。一种是 C 端的间接流量散发,另一种是通过外部转拉进行相干的业务解决。在业务能力方面,目前咱们曾经初步具备了如下一些根底能力,例如海量的信息存储、视频解决、内容辨认、直播视频内容的平安合规实时审核及直播间事件同步异步解决等能力。同时基于这些能力进行 SDK 的封装,例如推流、播放、IM 等场景化 SDK,通过提供规范的 SDK 进行直播能力的散发和复用,同时也可能不便业务方进行性能的集成。
在内容产出和对外服务上,咱们对本人的手机 APP,例如 i 视频、vivo 短视频、i 音乐、浏览器等 APP 进行直播能力的赋能,丰盛消费者的手机体验。此外,除了对 vivo 相干手机 APP 进行直播能力的反对外,咱们也会和第三方直播平台进行单干,做一些内容的散发和转播。
三、技术实际
3.1 泛娱乐秀场直播
首先,咱们先介绍一下最经典的泛娱乐秀场直播,如下图所示,这是一套基于 RTMP 协定的规范直播流程。
个别过程如下,首先进行输出源的采集,个别由屏幕、摄像头、麦克风等进行相干采集;接下来对其进行图像加工,例如美颜,滤镜,水印等;之后进行规范的 h264 编码,利用 RTMP 协定传输,传输到核心机房对相干事件做好相应的解决后,最初散发到边缘节点,用户终端逆向去边缘节点拉取直播流,最初在终端设备解码播放。在此规范观看流程之上,泛娱乐秀场直播也会提供一些常见的性能,例如互动聊天,直播间小游戏,PK,送礼等等。
这一套规范直播流程波及到的直播技术点也特地多,接下来和大家具体聊一聊咱们团队在落地相干直播业务过程中遇到的一些理论问题。
咱们遇到如下四个问题,开播工具的推流美颜就是咱们遇到的第一个技术难点,主播泛滥,对“美”的定义不一,主观性强,个性化需要多,在贴纸,色温,画面的饱和感等方面要求较高,同时在开播过程中,要求面部的不抖动不失真,同时对直播画面的清晰度,颗粒感也有相干的要求。
第二个问题就是音讯的散发,也就是咱们传统说的 IM 即时通讯技术,与传统的即时通讯技术不一样的是,除了群聊,私聊,播送这些经典的 IM 音讯散发场景外,“群”成员不稳固也是咱们须要思考的,用户频繁进出直播间,切换直播间,晚顶峰的音讯风暴和流量突刺,也是咱们须要应答和解决的问题。
第三个问题就是直播时延的问题,这也是直播经典的问题之一,引起时延的因素很多,例如终端设备,传输协定,网络带宽,编解码等等。
最初一个问题,就是直播老本的问题,想必做过直播的相干友商,都会分明地晓得,RTMP 和 CDN 不分家,作为根底的云服务产品,CDN 对于这种流媒体的散发,计费也是绝对比拟贵的,所以咱们也要在确保产品性能和用户体验的根底上,兼顾管制咱们的直播老本。
针对第一个技术难点,咱们做了如下解决,咱们在端上进行了一些技术优化。在美颜方面,充分利用了公司影像团队相干的技术积攒,对美颜,滤镜,贴纸,美妆,格调妆都进行了标准化,通用化,定制化的解决。
同时咱们在推流模块也做了一系列的试验,进行云端转码,超分,锐化等解决,确保每一个主播的画风具备肯定的观众吸引力。礼物动画播放局部,通过屡次试验采纳 MP4 进行特效礼物动画播放,测试数据表明,MP4 绝对于 svga 占用的内存和文件大小显著升高。最初在直播间秒开这个重要指标上,播放器内核团队对播放器进行了定制化解决,通过共享播放器、滑动、点击预创立等形式,使得直播间秒开这个指标可能达到行业内一流规范。
第二局部,咱们再介绍一下直播的另一个问题,就是即时消息的解决,潜在的问题能够从以下两个维度进行剖析。首先是用户维度,用户的被动行为包含送礼,礼物连击、点赞,互动聊天,以及在开播时霎时涌入的大量的用户,这些场景都会引起 IM 的音讯洪峰,使得服务器的负载压力一下子会进步很多,纵使咱们把 IM 模块组件化,进行模块间的隔离,然而突发的 IM 流量也会影响其余高优先级或者零碎音讯的散发。
第二个方面就是零碎维度,在群发音讯的场景下,也会有一个读扩散的问题,并且针对直播间这个场景,导致咱们 IM 散发的也都是结构化的数据,有些特地简单的业务场景,结构化的数据包体积也比拟大,在这种状况下如果刹时散发的音讯比拟多,会导致机房的进口带宽存在肯定的压力;第二个影响因素就是手机终端音讯解决能力也有肯定的限度,如果散发过多的音讯,而局部音讯的特效又比较复杂的话,局部低端手机机型会存在无奈即时解决的问题。
在这些场景限度下,咱们做了如下的三个计划,第一就是音讯推拉联合,业务流量顶峰 IM 长链接和 http 短轮询独特作业;第二个就是音讯应用 protobuf 压缩和分级限频,对直播间的音讯进行业务和主播两个维度分级,限度不同类型不同直播间散发的频率;最初一个计划就是监控降级,咱们能够对指定直播间进行监控,在监控呈现问题的时候,可能主动切换音讯散发的形式,确保音讯的达到率。
第三个就是直播时延问题,其实在直播时延的问题的解决上,咱们心愿可能做到在特定的直播场景下躲避不必要的时延,从而可能达到规范的直播时延,而不是一味的谋求极致的低时延。要解决直播时延的问题,首先咱们要剖析出产生时延的几个环节,并且梳理这些环节上咱们可能做的优化。采集端次要受缓存策略和数据编码所影响,同时网络环境、传输协定和物理间隔也都会对时延产生肯定的影响,针对这些问题,咱们收集了主播的手机型号和理论网络环境,依据理论状况进行相应清晰度的编码,弱化机型和网络对直播的影响。
其次咱们都晓得另外 80% 的时延是在上游 CDN 播放环节产生的,在播放端,为了抗卡顿,须要做缓冲自适应,码率自适应,前向纠错,丢包重传等工作,因为协定自身的限度,咱们只能依据不同的用户终端散发不同协定和不同清晰度的观看链接,同时咱们针对非凡的场景引入新的直播协定,例如 WebRTC,QUIC,SRT 等。
最初一个方面,就是泛娱乐直播老本问题,作为业务部门,老本也是咱们始终关注的,直播的费用次要有存储和带宽两个次要组成部分,咱们做了如下三个方面的优化,存储上,咱们首先将主播的录像进行转码,升高存储文件的大小,其次对主播进行热度分级,进行不同工夫的存储解决,最初也会剪辑相干的精彩霎时,在符合国家相干法规的根底上,删除原文件,从而升高存储的费用。
第二个就是根底服务 CDN 费用,云厂商的免费形式有依照带宽峰值和流量这两种,所以咱们也会从业务的角度上,进行肯定水平的策略优化,针对推送场景,咱们会分批次分时间段进行推送,避免大量直播观看用户同时刹时涌入直播间,打高直播的带宽峰值。同时观看端反对多清晰度,依据业务呈现的不同流量时间段,散发不同清晰度的观看链接,最初从策略上进行限度,在进行主播经营的时候,进行迷信的开播工夫布局,避免高流量主播扎堆开播,造成不必要的峰值带宽而带来的额定流量费用,最初一个就是监控,对每一个周期的费用进行判断和计算,通过理论的应用状况,对下一个周期进行阶段性调整,确保可能失去阶段免费较优解。
3.2 互动直播
剖析完了泛娱乐秀场直播的几个经典问题的解决方案后,咱们也来也介绍一下目前热火朝天的低时延的互动直播,互动直播外围特点就是超低时延,互动性强,在肯定的业务场景下,对各类音讯散发的程序性和实时性的要求也特地高,目前常见的互动直播,目前业界内落地比拟好的场景就是电商,教育,连麦互动娱乐,政企直播等。
与互动直播相干的性能和技术次要如上所示,例如多端的信息同步,媒体解决,与泛娱乐直播相比,在流媒体平安审核,多用户终端一致性上,也有更加严格的要求,相干的技术栈,很大一部分都是基于实时音视频技术,并且也会联合一下 SEI 技术,进行信息程序同步,一般来说,是能够满足业务的需要。
咱们在落地互动直播的时候次要遇到两个业务痛点,第一个痛点就是,基于 RTMP 协定的一个简短的直播链路的秒级时延是很难胜任的,并且基于 RTMP 协定的多终端媒体流画面解决,例如连麦,混流。静音等场景,RTMP 解决绝对简单,且不利于多终端同步。第二个方面就是信息管控方面,信息管控也是咱们在理论开发过程中遇到的问题,例如终端一致性管控,流媒体平安管控,异样管控等。在理论生产环境下,因为存在大量的多终端的互动,互动过程中产生大量的音讯,局部业务场景会存在音讯散发的时候呈现提早、程序错乱、甚至失落,最终导致各个业务终端呈现状态不统一的问题,这也是目前,互动直播除了时延外,另一个比拟显著的问题。
针对互动直播的低时延多互动的业务特点,目前业内的规范解决方案是 RTC 相干的技术,RTC 与 RTMP+CDN 这两个解决方案从技术特点上来说,是齐全不一样的,RTMP 的技术特点就是与 CDN 绑定耦合,RTMP 须要借助 CDN 边缘网络的能力,使得多地区的用户可能就近获取直播内容,并且可能进步用户获取直播视频流的成功率和秒开率,然而也是因为受限于网络协议等因素,带来了对应的提早是 RTMP 技术协定栈所无奈防止的。而 RTC 的也有两个比拟显著的技术特点,基于 UDP 协定的 RTC 实践时延在百毫秒内,第二个特点就是借助 SFU 和 MCU 通信形式适宜做多端交互,当然,在多端互动的场景下 RTC 对机器和网络的要求也比拟高,所以咱们也会针对指定场景,使用不同的相干技术去解决理论问题。
在互动直播的开发过程中,咱们遇到了信息管控的一系列问题,首当其冲的就是 一致性管控,互动直播业务内容信息和流媒体信息强相干,须要实时进行无差别的信息程序传递,咱们做了如下的一些弥补管制,进行客户端单个和批量信息上报,由服务端纠正个别终端的异样状态;第二就是正当应用 SEI,在视频流信息携带大量的业务信息,例如 K 歌房、带货、直播答题等,这样可能保障信息的一致性和同步性。
第二个就是 安全性管控,依照国家相干规定,音视频直播内容是否违规是相干部门重点审核的对象,在秀场直播这边,咱们目前做了视频流定时截帧审核,应用机审和人审双重审核机制,互动直播方面,则会对每一个终端进行独立审核,准确辨认出违规的互动终端,最终打造绿色衰弱的直播环境。最初一个场景也是业务复杂性决定的,正因为互动终端设备多。人为、网络、设施等因素导致异样概率也大大增加,所以咱们要筹备疾速辨认断流,无效地利用回调或者客户端能力范畴内的上报,在做好业务校验后,进行相干的异样复原流程的解决。第二就是利用心跳检测机制,客户端定时上报心跳,如果服务端超过指定次数没有收到相干的心跳,就能辨认出该设施出现异常,同样进行相干的异样逻辑解决。
3.3 事件直播
最初一个模块,咱们再重点介绍一下直播平台给公司外部相干业务进行直播赋能的案例。vivo 公司日常也会有很多官网的事件直播,例如技术分享、校招宣讲会、疫情常识宣讲、品牌形象直播,以及更具备官网性的手机发布会直播。
为什么在这里会重点提及公司直播呢?
首先就是官网组织,影响面比拟微小,受众群体也比其余类型的直播更大,咱们投入开发运维和保障直播的精力也会相比其余直播更多。在公司直播这块也进行了一些技术的演绎和总结。首先须要保障整场直播的稳定性和流畅性,咱们对网络进行相干的监控和优化,同时搭建多地区的外部直播服务器做好多地区的流量隔离和负载平衡。另一个方面就是针对灵活性的技术支持,为了节俭咱们的开发工夫,在助力几场大型公司直播之后,咱们也系统地进行整顿,演绎出一些通用的性能 SDK, 通过应用这些屡次实践证明没有问题的 SDK 可能升高直播出错的概率,也可能进步整场直播的成功率。
接下来讲两个比拟有意思的案例,也是咱们在摸索实际公司外部直播几个比拟乏味且实用的案例,第一个案例就是咱们去年公司因为疫情的起因,只能举办线上直播年会,vivo 的员工办公地点很多,坐落在全国各个中央,所以如何高效地保障国内外多个办公地点的万名员工同时高清观看就是咱们过后须要解决的问题。
这个问题的根本原因就是每个办公地区的进口带宽是无限的,如果公司员工都应用公司无线网络观看的时候,会导致个办公地区的进口带宽被打满,从而会影响局部员工观看的体验,甚至会影响大家的日常办公。
针对带宽限度的问题,一般而言,业界有两个比拟通用的解决方案;
- 长期进步各个办公地点网络运营商的进口带宽;
- 通过升高直播的码率以来升高带宽的压力和老本。
其实这两种计划都不能齐全保障直播没有问题,并且前提还是须要就义局部用户的观看体验的根底上,这种计划也是很难承受的。最初落地并成功实践的计划就是通过内网转推,内网服务器再做负载平衡,并且不同办公地点的观看申请通过 DNS 解析到本地办公地点的直播服务器,这样就能够胜利解决带宽的问题,并且还能够反对高清 4k 的清晰度。目前这个能力曾经被屡次验证可行,相干的实际细节也在多家权威技术网站发表,失去社区的统一好评,如果大家有趣味能够进行相干的查阅。
第二个乏味的案例,就是公司日常的发布会、宣讲会,须要同时推流到多个第三方直播平台,例如 B 站,腾讯直播等等。因为推流设施推流有个数限度,无奈反对多个推流地址,之前的计划都是协调各个直播转播合作伙伴,拉群同步一个拉流地址,每次都会有大量的协调沟通确认工作,很大水平上影响大家的效率,并且很容易呈现局部单干商因为配置谬误,导致无奈失常直播。
在这个大的背景下,咱们做出了一些调整,通过整合外部直播服务器和云直播服务器,做好对应的网络容灾,在主线网络呈现问题的时候,可能零碎自动识别并更换到另一个推流集群,最终保障直播全程的流畅性和稳定性,此外咱们还搭建了人工经营平台,提前零碎的配置好相干的地址,并且通过开放平台,合作方能够长期去批改相干的配置,这样能够大大降低人工配置谬误的可能性,能够更高效率的对公司相干的直播进行反对。
四、总结
目前 vivo 直播平台还处于初步搭建和一直摸索的过程中,不过咱们的方向和布局是清晰的,就是通过一直地丰盛 C 端直播模式,引入更多模式的直播,给 vivo 手机用户带来更好的用户体验,同时进行相干技术的积淀和积攒,最初把这些技术造成一些规范的解决方案,向公司的横向部门进行内容和技术的产出,例如技术 SDK 服务,外部直播服务,直播短视频服务等等,造成内外平台互相反哺的良性循环。
作者:vivo 互联网服务器团队 -Li Guolin