前言
随着移动直播的兴起,每个人都可以拿起自己的终端设备随时随地的尽情的直播,无论是在家里也好,户外也罢都可以享受其中。但是在直播的过程中你一定遇到过留言一堆卡导致用户体验不佳的经历,你也有遇到过自己的平台用户数因为观看直播卡顿从而转移到对手平台的情况。不过这一切都不是事,在腾讯云可以手把手教你解决直播过程中关于卡顿的一切问题,想知道的可以继续往下看。
直播流程简述
在解决卡顿之前我们先放上一张图,简单的理解直播过程中都是经过哪几个步骤:
从图中,可以看到影响卡顿的环节主要分为三个部分:主播端、观众端、服务端,既然我们知道影响卡顿是这三个环节,我们可以从这三个方向去着手分析。
主播端侧问题及解决方案:
原因1:推流端设备性能
通过图1-1我们了解到主播端推流设备涉及对音视频采集,编码等,而这些是很耗费系统资源的,这就要求对设备的性能比较高,当推流端设备性能不足时很容易导致推流的卡顿,这种问题在游戏直播经常出现。此时可以检查下设备的cpu,内存占用资源情况,如果cpu跑到百分之80以上,建议关闭一些耗费资源的APP,然后再加以测试。
windows检查cpu方法:https://jingyan.baidu.com/article/e4511cf30441b16a855eaf00.html
mac端检查cpu方法:https://jingyan.baidu.com/article/455a99506cbc68a1662778a0.html
android端方法:https://jingyan.baidu.com/article/c275f6ba0d0b67e33c75677b.html
ios端方法:https://jingyan.baidu.com/article/066074d6143af7c3c21cb0e9.html
原因2:网络环境
(1)这里的网络环境指的是主播端向流媒体推流的上行网络,当主播端网络较差时,产生的音视频数据都会被堆积在主播的手机里传不出去,上传阻塞会导致全部观众的观看体验都很卡顿。比如主播上行带宽只有2Mbps,但是主播推流设置的码率为3Mbps,这就会造成数据推不到流媒体服务器,对接在主播端。解决的方案可以让主播把推流码率降低到上行带宽之下即可。
pc端obs设置码率方法:https://jingyan.baidu.com/article/d2b1d102c87e725c7e37d429.html
主播端上行网络测试方法:http://www.speedtest.net/,关注UPLOAD参数值。
(2)主播端跨网跨区域推流,这种情况都是由主播手机上或者pc端上Local DNS配置不准确导致。可以采用以下两种方式去优化,一种是从主播端切入,主播修改自己的dns,修改为和客户端ip一致的dns。
检查dns和客户端ip是否一致方法:https://ping.huatuo.qq.com/
pc端修改dns方法:https://jingyan.baidu.com/article/7c6fb428aa51e2c0642c90f3.html
移动端修改dns:https://jingyan.baidu.com/article/15622f2475271dfdfcbea583.html
另外一种办法是采用腾讯特有的httpdns业务,端上可以向httpdns服务器发起请求,获得最优的节点后主播向此节点进行推流,避免出现跨区跨运营商。
原因3:推流端参数配置问题
一般来说,为保障视频的流畅度帧率会设置在每秒15帧以上,如果帧率低于每秒10帧,画面就会出现较明显的卡顿,如无特殊情况,尽量将视频帧率设置在每秒15-30帧之间。合理的设置关键帧间隔,一般设置1-2个关键帧,设置太长会导致延迟增加。
原因4:视频流时间戳不一致
在直播中当音视频时间戳不同时,会影响画面渲染造成卡顿的现象。可以检查从推流设备推出去的时间戳进行分析,某种情况下时间戳如果不从0发送也会导致卡顿现象。
播放端侧问题及解决方案:
原因1:网络环境
这里的网络环境指的是观众的下行网络,若播放端的带宽不够或发生抖动,会导致观看直播卡顿。类似比如观众下行网速为2Mbps,实际主播码率为4Mbps,这种情况下下载数据过慢会造成播放端卡顿。解决方案可以降低视频的清晰度进行观看。
原因2:播放端设备
播放器设备性能问题,因为播放端涉及到播放器解码的问题,视频越清晰,对解码要求越高,如果设备性能不足会导致实际解码播放的帧率远小于视频码流的实际帧率,从而产生卡顿。可以进行设备的升级,比如硬件或者软件方面,也可以改变解码方式,其次合理的增加播放器的buffer值,减轻弱网环境下的抖动。
服务端侧
腾讯侧在主播到流媒体服务器端以及观众到流媒体服务端进行了全链路的质量监控,实时监测各种指标包括码率、卡顿、帧率等,一旦服务节点异常会自动进行剔除切换,从而保证直播的稳定性。
最佳实践
基于以上问题,腾讯云推出了独有的移动直播端IOS和安卓端SDK,该SDK不仅具有市面上美颜,连麦、贴纸等通用功能,而且结合了腾讯云独家的网络优化算法,直播推流抗30%丢包无压力,大大提升弱网环境下主播推流的质量,更重要的是具有自适应码率的功能,随时根据主播网络情况动态调整,避免出现带宽不足带来的全局卡顿,播放SDK亦如此。
腾讯云SDK官网文档介绍:https://cloud.tencent.com/document/product/454