QT手游直播后台架构分享
手游直播方兴未艾,催生了QT直播和手游宝的合作模式。目前通过手游宝接入QT直播的业务有:全民突击、天天酷跑、天天飞车、热血传奇、九龙战等。
目前QT后台提供的手游直播解决方案有两种:
(1)手机上行视频流到QT后台
(2)手机上行视频流到QT房间
一、手机上行视频流到QT后台
为此在原来架构的基础上扩展了对第三方直播业务的接入支持,架构图如下所示:
(1) 标准化输入和多格式输出:
目前手游宝直播sdk,采集视频统一编码成标准flv流(或其他协议格式)上传,后台根据产品需要可经协议转换生成不同的流格式。如果需要pc-web端可以拉取flv流,通过flash播放器观看;手机侧可以通过通用h5播放器获取ts流观看,也可以通过我们自有播放器获取flv/ts流观看。
另外也可以借助QT后台转码模块,产生出低码率的流提供给不同网络环境下的观众。
(2) 架构和业务分离:
这套架构将业务侧和直播流后台分离,不同的业务对于QT直播后台只需要appid来标识业务,其他处理完全相同,保证了架构的通用性。
(3) 负载均衡和容灾:
利用TGW的IP收敛作用,将QT接入代理服务器置于TGW后端,由直播接入代理服务器和节目管理服务器统一负责资源调度,包括视频上行接入服务器资源、视频合流/转流服务器资源,以及视频videoid资源的分配和调度,采用就近原则和均衡算法来保证机器资源的合理调度,并配合自动化管理策略分配videoid资源。
因为所有资源都采用自动化分配策略,并且实时上报自身负载和视频状态到事件代理服务器,通过上报和订阅的方式来保证状态的弱一致性,保证资源的合理调度和实时监控切换和回收。
(4) 网络传输
Tcp和udp的比较。
(a)数据上行如果采用tcp,那么在主播网络波动和带宽不稳定的情况下,数据发送将受到抑制,极端情况可能数据发不上来,而且前后台无法采用合理的传输策略来控制丢包、丢帧;
(b)数据上行如果采用udp,那么在主播网络波动和带宽不稳定的情况下,由于udp本身较强的抢带宽能力,所以效果会比tcp好,而且前后端可以通过seq来检测丢包和丢帧的情况,并实时进行补包和重传,保证视频质量受到最小影响。
因此我们根据需求比较来说,在主播客户端和QT后台之间采用udp协议来传输数据。
(5) 上行码率和清晰度的选择
一般主播都是在wifi环境下直播,直播时间一般会在晚上高峰时段(20:00~23:00),一般玩家家庭网络带宽有限,而且在天朝如此庞大和复杂的网络环境下,尤其是晚高峰用户实际带宽和理论贷款差距很大,而且能满足1M码率流畅上传数据的很少,因此在保证清晰度的同时,我们会在前段通过测速来推荐用户使用尽可能高的码率直播,一般设定1Mbps、800kbps或以下。
二、手机上行视频流到QT房间
为了更好的融合QT直播间看美女、送礼等交互体验,给观众提供更多优质的体验,所以产生了将手机直播流接入到QT房间的需求。
手机直播客户端通过wifi将直播数据上行到PC端,pc端通过数据接收插件将数据接收并整合主播头像后重新编码通过QT客户端推到QT后台,这样可以完美呈现主播手机直播画面到QT房间,往后就是QT房间的完整流程了,关于QT房间直播的详细架构这里不做赘述。
此方案架构图如下:
该方案,不仅可以通过传统QT房间观看,而且可以通过产生出的多码率、不同格式的流来满足不同场景用户的流畅观看需求。
最后,补充观众经QT后台和CDN模块的交互图,方便大家理解流分发逻辑。