直播疑难杂症排查(2) — 播放卡顿

简介:

1. 播放卡顿的表现


播放卡顿的表现总结下来包括但不限于以下这些:


- 频繁出现缓冲

- 播放不够流畅,画面一卡一卡的


2. 常见播放卡顿问题排查


从代码层面来看,什么是卡顿?其实是指播放器渲染的帧率太低,比如:1s 显示 3~5 帧,或者渲染完一帧后,过很久才渲染下一帧。


因此,我们需要排查,是什么原因导致了播放器无法流畅地渲染数据,通常可能有如下几大类:


- 网络带宽不足

- 播放设备性能不足

- 视频流时间戳问题


下面我们一一来分析下具体的原因。


2.1 网络带宽不足


一个完整的直播应用,简单来说数据流是下面这样的:


主播 -> CDN -> 观众


因此,直播出现卡顿,三个端都可能是问题的源头:


- 主播端的网络不好,导致推流上行不稳定

- 服务端的线路质量不好,导致分发不稳定

- 观众端的网络不好,导致拉流下行不稳定


那么,我们如何确切地判断是哪一个环节出了问题导致的播放卡顿呢 ?


2.1.1 如何判断主播网络不好


主播端网络不好,直接影响到的就是千千万万的观众,因此,如果发现所有的观众都出现频繁卡顿,那么多半就是主播端的问题了。


(1)带宽测试


用带宽测试工具:http://www.speedtest.net/ 测试下主播的带宽,如果主播的上行带宽明显小于推流的码率,那么肯定会出现推流帧率不稳定。


(2)统计回调


一般的推流 SDK 都会统计主播推流的实时视频帧率,如果预设的帧率是 20fps,但是实际的帧率低得很多,比如 5fps,排除手机性能低的原因的话,多半也是网络带宽不足引起的。


(3)CDN 厂商给出的后台统计


比如,七牛直播云就给我们的每一个客户提供了如下的后台 Portal 界面,可以用于监控每一个主播的实时推流情况:

wKiom1j_Mh2R8YmkAAKytzW4Jy8902.png

从这个图来看,该主播的推流上行其实还是蛮稳定的,一直在 20 fps 左右。


2.1.2 如何判断观众端网络不好


观众是整个直播的终端环节,一般如果不是大面积的观众出现卡顿,那么很可能是这个观众自身的网络问题,可以考虑切换到别的 WiFi 网络,或者 4G 下播放试试,我们还可以通过如下手段,具体确认下是网络的原因


(1)带宽测试


跟主播端类似,我们依然可以用带宽测试工具,测试下观众端的带宽,如果该观众的带宽明显低于主播的推流码率,那么肯定会出现卡顿。


(2)网络质量测试


可以在观众端的网络下,ping 一下播放域名,看看当前丢包率是多少,一般好的网络,ping 值的丢包率是 0%


wKioL1j_MkOTTyPLAANGNQYq6Jg793.png


当然,还有一些更加专业的网络性能测试工具,如 iperf,这里就不展开详细的介绍了。


2.1.3 如何判断 CDN 线路不好


如果排除了主播端上行网络原因以及观众端下行的网络原因,那么,剩下的就很可能是 CDN 线路质量原因了。


关于 CDN 线路质量,一方面可以通过联系 CDN 厂商来排查,另一方面,也可以通过播放端的打点上报,统计出各家 CDN 的线路质量(比如:首开,卡顿率),分地区做一些线路的调整和优化。


2.2 播放设备性能不足


越高清的码率,对解码的要求也越高,很多手机性能不足以支撑 720P 甚至 1080P 的视频解码,特别是很多低端的 Android 手机,因此导致实际解码播放的帧率远小于视频码流的实际帧率,从而产生卡顿。


解决这个问题的思路主要有如下几个方面:


- 尽可能选择使用硬解,充分利用 GPU 加速

- 如果有多种码流,尽可能在低端机上选择非高清码流

- 增大缓冲区,有助于缓解解码不稳定带来的卡顿


2.3 视频流时间戳问题


这个问题也遇到的比较多,特别是客户自己写的推流 SDK 或者码流经过一些转码处理后,没有处理好音视频时间戳从而产生的问题。播放器一般是严格根据码流中的音视频的时间戳来做音画同步的,因此,如果码流中的音视频时间戳出现错误,肯定会影响到播放画面的渲染时机。


例如,曾经遇到一个流的时间戳信息如下:


wKiom1j_Mm2RpqdyAAIWJyjJMK0112.png


可以看到,它的视频时间戳出现了 “回退”,而播放器一般 master 主时钟是单调递增的,当后来的视频帧小于了当前的主时钟,播放器就会做丢帧处理,从而导致播放的视频帧率远低于实际码流中的视频帧率,从而产生卡顿现象。



本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1919383,如需转载请自行联系原作者

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
5月前
|
Web App开发 编解码 资源调度
在阿里云直播解决方案中,当使用ARTC协议观看直播并进行清晰度切换时出现画面卡顿或马赛克现象,可能存在以下几种原因
【6月更文挑战第30天】阿里云直播中,ARTC协议下清晰度切换出现卡顿或马赛克可能由网络带宽、缓冲策略、转码效率、播放器解码、协议特点及服务器资源调度引起。解决措施包括优化网络、智能切换算法、播放器与服务器优化。通过监控和日志分析定位问题,参照官方最佳实践进行优化。
225 1
|
XML 存储 编解码
浅浅地优化下视频流播放体验
浅浅地优化下视频流播放体验
614 0
|
缓存 Java 索引
浅浅地优化下视频流播放体验(下)
浅浅地优化下视频流播放体验
341 0
|
缓存 UED
语音直播系统源码, 程序运行缓慢的主要原因分析
语音直播系统源码, 程序运行缓慢的主要原因分析
|
存储 缓存 监控
移动APP卡顿问题解决实践
本APP为面向用户的一款基于NFC的安全支付产品。本APP本作品将密码学原理、计算机技术、NFC通信技术和数字货币思想有机结合,在全面保障安全性的同时最大限度的提高了消费者的支付体验。相对于传统方案,本作品具有以下特点:1)实现货币的数字化;2)商家与用户双向身份认证;3)交易过程安全保障;4)完善的移动支付体系;5)离线支付,脱离网络;6)账户丢失可找回;7)差错协商,保障交易双方利益;8)标签型商城,便捷最大化;9)成本低廉,便于推广。
移动APP卡顿问题解决实践
|
编解码 缓存 边缘计算
优酷播放体验优化实战(三)--低延时直播
5G到来后用户的网络速度逐渐提高,同时用户对直播延迟等播放体验的要求也越来越高,在此背景下,优酷技术团队结合业内主流的直播技术架构提出了两种基于HLS(HTTP Live Streaming)的低延迟直播方案(Low Latency HLS),并且正式应用到了优酷直播业务。
482 0
优酷播放体验优化实战(三)--低延时直播
|
缓存 监控 网络协议
为什么你看直播会卡,影响直播系统流畅度的主要是这三点
据相关部门的统计,截止到今年3月份,我国的网民数量已突破9.04亿人,互联网的普及率升至64.5%,相比2018年底提升了4.9个百分点。在这当中,移动端的网民用户猛增,随着移动互联网的发展手机逐渐超过电脑的使用率,移动端直播系统也逐渐崛起。
为什么你看直播会卡,影响直播系统流畅度的主要是这三点
|
编解码
何必冥思苦想,直播app开发中延迟的“罪魁祸首”在这
关注直播系统开发的朋友都知道,直播APP开发中的流媒体传输一般流程是采集、前处理、压缩、推流、拉流、解码、播放,这当中每个阶段都是十分重要的,所以为了保证用户观看的及时性,这些流程需要高度协调统一,来减少在线直播的延迟,那么还有那些方面是延迟的影响因素呢?
何必冥思苦想,直播app开发中延迟的“罪魁祸首”在这
|
编解码
直播开发完成后关于音画不同步的原因及办法
如果说直播过程中出现卡顿、延时是很正常的,那么唯有音画不同步是最令人难以忍受的。对于直播开发完成之后出现音画不同步的现象,也是非常令人头疼的。我们可以从以下几个方面来简单分析一下,音画不同步现象产生的原因以及解决办法。