背景

近些年来,网络直播迅速席卷了我们的生活。人人都可以做主播,打开手机就是看直播。直播已经改变了我们的生活方式,也逐渐改变了我们思想观念。

而我们经常在使用移动端直播的时候会遇到各种各样的问题,比如手机卡顿、闪退、黑屏、手机发烫这一系列问题,那我们应该怎样去检查解决这些问题了,小编给大家分享一下处理问题的一些方法。

问题描述

首先我们需要明白卡顿和黑屏一般都是播放端比较常见的问题,而闪退和手机发烫在推流和拉流端都会发生。我们要根据情况更好的去定位问题。

问题的排查定位思路

1、播放卡顿

造成播放端卡顿的原因主要有三种:

原因一:推流帧率太低

如果主播端手机性能较差,或者有很多占 CPU 的后台程序在运行,可能导致视频的帧率太低。正常情况下 FPS 达到每秒15帧以上的视频流才能保证观看的流畅度,如果 FPS 低于10帧,可以判定为帧率太低,这会导致全部观众的观看体验都很卡顿

原因二 :上传阻塞

主播的手机在推流时会源源不断地产生音视频数据,但如果手机的上传网速太小,那么产生的音视频数据都会被堆积在主播的手机里传不出去,上传阻塞会导致全部观众的观看体验都很卡顿。

原因三:下行不佳

就是观众的下载带宽跟不上或者网络很波动,例如直播流的码率是2Mbps的,也就是每秒钟有2M比特的数据流要下载下来,但如果观众端的带宽不够,就会导致观众端体验非常卡顿。 下行不佳只会影响当前网络环境下的观众。

解决方法

如果您使用的是腾讯云移动直播 SDK 来推流,该 SDK 提供了一种状态反馈机制,每隔1秒 - 2秒就会将内部各种状态参数反馈出来,你可以时时刻刻监控推流的状态和拉流的状态,然后随时做出相应的调整措施来解决对应的问题。

如果你是用的OBS推流的话,首先看一下推流的界面有没有丢帧的情况,如果是你的上行网络达不到你设置的推流码率的时候就会出现推流丢帧的情况下,这样观众端拉流观看的时候就会出现卡顿的情况。可以适当的降低推流的码率和帧率来降低直播的卡顿率。

2、播放黑屏

播放黑屏所呈现出的现象就是画面是黑的,但是没有声音,出现这样的情况可能的原因有一下几种情况。

原因一:主播端摄像头权限问题

无论 Android 还是 iOS,App 使用摄像头都是需要申请授权的,如果 App 层面不做专门的处理的话,很可能出现摄像头权限被禁用的情况。如果 App 没有获取到摄像头权限,视频就无法采集成功,从而导致推出来的流只有音频数据。

解决方法

我们在集成移动直播SDK后,可以在代码中加一个检测摄像头和麦克风权限的判断,当第一次使用APP第一次推流的时候需要去开启摄像头和麦克风的权限在启动本地摄像头的预览并启动推流。

原因二:拉流端解码问题

当播放器遇到不支持的视频格式,或者数据内容不完整/格式异常,则会解码失败,从而导致无解码视频输出。

解决方法

比如播放器本身通常都是支持H264的格式编码,如果你推流的编码方式是H265的话,那么就需要使用硬解码的方式,如果是软解码的话,就会出现播放画面黑屏,只能听到声音。IOS那边是在8.0系统之后开放了硬解码的接口,但是小编这边测试的是IPhone6、6P、7 都不支持,需要以上机型才支持。

3、手机发烫

直播中导致手机发烫的最主要原因CPU/GPU的占用率比较高,还有跟你的硬件的CPU处理能力也会有一定的关系,那我们就要分析下哪些因素导致的。

原因一: 数据量太大

我们都知道直播的整个过程是通过视频采集-数据处理-编码-推到云端-拉流播放整个过程组成的,而整个过程中最消耗CPU/GPU的就是数据大小和数据处理这块,所以如果你推流设置的分辨率、码率太高的话,那CPU/GPU就会在短时间处理很大的数据。就会出现发烫的问题

解决方法

因此在不影响业务的前提下尽量减少推流视频的分辨率,帧率的大小,减少视频处理这块(高级美颜处理)的操作, 从而降低功耗。

原因二: 程序进程太多

如果你后台同时运行的进程太多,就会占用很大一部分的CPU资源,而CPU的占用率越高,手机的发烫也会越严重。

解决方法

如果您使用的是腾讯云移动直播 SDK 来推拉流,可以直接通过SDK指标监控去查看下 APP CPU和系统CPU的占用率是否很高,可以通过测试工具,检测下持续运行在APP后台的其他进程程序,关闭一些与直播无关的进程,减少CPU的消耗。

原因三:软编/软解

这个原因我想大家都明白,软编/软解靠的是 CPU,非常耗性能,而硬编/硬解是使用专门的硬件编解码模块,会显著降低 CPU 的负担,相对而言,会省电很多。

解决办法

为了考虑各种机型兼容性的问题,我们可以在代码中加上判断逻辑,去自由的切换软硬编解码。

其他原因

还有些其他原因也会造成手机发烫,比如 边充电边推拉流、APP中的一直开启的动画特效,蓝牙一直属于连接传输状态等。

总结

我们通常在对接开发中会有很多注意事项,而且每个业务场景的情况也会不同,所以在选择运营商和集成商的时候特别重要,一个好的直播环境是需要各种稳定因素搭建出来的,而我们在去搭建的同时。

我们公司接入的是腾讯云直播的产品,总的开发过程还算顺利,目前项目还在持续的开发中,后面会有些其他问题也会持续跟大家分享出来,大家也可以在下方留言跟小编去探讨直播中所遇到的一些问题。

更多点播直播问题欢迎微信添加视频云小姐姐(shipinyun0925)进行咨询哦~

文章来源于腾讯云开发者社区,点击查看原文