前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >卡顿、黑屏、发烫!你的直播崩了吗?

卡顿、黑屏、发烫!你的直播崩了吗?

原创
作者头像
腾讯云音视频
发布于 2020-12-25 06:31:22
发布于 2020-12-25 06:31:22
3.9K04
代码可运行
举报
文章被收录于专栏:音视频咖音视频咖
运行总次数:4
代码可运行

背景

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

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

问题描述

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

问题的排查定位思路

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)进行咨询哦~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
企业微信JS-SDK开发(一)------通过config接口注入权限验证配置
企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。
用户4191150
2021/08/10
2.6K0
ASP.NET MVC 微信JS-SDK认证
ASP.NET MVC 微信JS-SDK认证 写在前面 前阵子因为有个项目需要做微信自定义分享功能,因而去研究了下微信JS-SDK相关知识。 此文做个简单的记(tu)录(cao)… 开始 所有的东西都从文档开始:微信JSSDK说明文档 项目需要用到的是分享接口 不过使用微信JS-SDK之前,需要做JS接口认证。 认证如下: 步骤一:绑定域名 步骤二:引入JS文件 步骤三:通过config接口注入权限验证配置 步骤四:通过ready接口处理成功验证 步骤五:通过error接口处理失败验证 步骤一中允许使用域
李国宝
2018/06/19
5.4K0
微信公众平台开发[2] —— 微信端分享功能
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/51870790
泥豆芽儿 MT
2018/09/11
5.5K0
微信公众平台开发[2] —— 微信端分享功能
uni-app使用微信JS-SDK
前段时间因为修改bug的原因学习了下如何在uni-app下面使用多图上传,所以基于uni-app做了一个微信JS-SDK调用的Demo
薛定喵君
2021/07/28
7.2K0
微信JS-SDK签名接口的使用与开发
最近诸事缠身好久没有写文章了。前不久将与微信公众号有关的一些知识点进行了梳理,微信公众号开发过程中,用最多的就是微信js-sdk了。但是使用微信js-sdk需要获取签名、时间戳、随机字符串,等等一系列的参数,那问题就来了,这些参数是由后端提供能,还是前端自己获得呢?当然是先由后端获,然后向前端工程师提供一个接口,只不过这个接口返回的是jsapi_ticket还是计算好的签名signature,这个就得由前后端工程师协商了,一般为了方便,我的做法是直接返回计算好的签名。
挥刀北上
2019/07/19
7.7K0
微信JS-SDK签名接口的使用与开发
SpringBoot接入微信JSSDK,看这篇妥妥的
https://github.com/javadog-net/springboot-wexin
JavaDog程序狗
2024/10/10
1700
SpringBoot接入微信JSSDK,看这篇妥妥的
Web前端学习 第11章 微信开发4 JS-SDK接口
微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。例如我们网页中希望实现扫一扫、获取本地相册、位置信息、分享功能等,都可以使用JS-SDK来实现。
学习猿地
2020/07/09
2.4K0
Web前端学习 第11章 微信开发4 JS-SDK接口
企业微信PC版应用跳转到默认浏览器,避坑指南,欢迎补充。。。
我们公司内部用企业微信沟通,最近有个需求,一个应用在企业微信PC版打开时,要自动跳转到PC的默认浏览器。在开发过程中,我经历了几个坑,在这里记录一下,希望对你有所帮助。
zhanyd
2022/12/05
4.2K0
企业微信PC版应用跳转到默认浏览器,避坑指南,欢迎补充。。。
微信公众平台开放JS-SDK(微信内网页开发工具包)
微信公众平台开放JS-SDK(微信内网页开发工具包),这次开放接口是质的飞跃,是对开发者和广大用户一个利好的消息。未来的公众号图文消息会更丰富多彩,准备脑洞大开吧!(第三方平台正式支持接入微信公众平台JS-SDK) 微信公众平台今日面向开发者开放微信内网页开发工具包(微信JS-SDK)。 通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照、选图、语音、位置等基本能力,还可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。 微信JS-SDK主
ytkah
2018/03/05
13K0
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
注意:假如需要在页面加载时就调用的话,需要把对应的执行函数放到wx.ready(function(){});方法里面加载执行,之前我调用加载就获取地理位置的接口就是因为没有放到这里面所以一直没有获取到用户当前经纬度坐标。
追逐时光者
2023/12/04
5930
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
微信JSSDK接入Java版--步骤及问题处理和解决
可以关注测试微信号,查看效果  服务器是个人的。请不要恶意攻击。 JSSDK使用步骤 http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp142
小帅丶
2018/02/09
3.8K0
微信JSSDK接入Java版--步骤及问题处理和解决
微信JS-SDK的使用
通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
越陌度阡
2020/11/26
17.3K0
Java微信公众平台开发_07_JSSDK图片上传
(2)对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式 (即 key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
shirayner
2018/08/10
2.5K0
Java微信公众平台开发_07_JSSDK图片上传
基于koa实现的微信JS-SDK调用Demo
微信JS-SDK权限验证的签名必须在服务器端实现,签名用的url必须是调用JS接口页面的完整URL,所以这里决定用koa来同时完成页面渲染及生成签名所需验证配置。 项目依赖库如下:
薛定喵君
2021/07/23
5.1K0
微信中页面二次分享小图标丢失问题
在我们有房APP1.1的版本中增加了房产资讯的功能,昨天晚上有同事在群里反馈从APP中分享的资讯到微信中,然后再次分享出去的时候标题和小图标不见了,见下图:
猿天地
2018/07/25
3.3K0
微信中页面二次分享小图标丢失问题
微信公众号开发——2、微信网页开发
在公众号平台下,自定义菜单,添加菜单,并选择菜单内容跳转到指定页面地址即可(需认证后方可添加页面地址,个人账号暂不支持认证)。
全栈程序员站长
2022/09/01
7.7K0
微信公众号是html页面吗,微信公众号网页开发
如果有相关接口权限无法开启,推荐使用:微信公众平台-开发-开发者工具-公众平台测试帐号开发
全栈程序员站长
2022/09/06
14.3K0
微信公众号是html页面吗,微信公众号网页开发
.Net微信网页开发之JSSDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取讲解
  因为接下来会有几篇关于微信JS-SDK功能使用的文章,主要会对微信分享,获取设备信息,获取地理位置,微信扫一扫这几个功能进行讲解。而这几个功能都是围绕着微信JS-SDK实现的,首先使用微信JS-SDK时我们需要生成对应的配置信息,才能够成功的调用微信JS-SDK。看了下微信官方文档对于accessToken和jsapi_ticket的生成示例代码并没有看到咱们大.Net的,所以为了帮助那些刚接触微信开发的同学,在这里我会把自己在使用微信JS-SDK的一些步骤和配置信息生成的方法展示出来,希望能够和大家相互学习共同进步。
追逐时光者
2019/08/28
2.2K0
.Net微信网页开发之JSSDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取讲解
Java微信公众平台开发_05_微信网页授权
登录微信公众平台后台, 开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息 - 修改,
shirayner
2018/08/10
6.5K1
Java微信公众平台开发_05_微信网页授权
企业微信系列之JSSDK使用权限签名对接
最近在对接企业微信,要将H5页面嵌在APP里,所以得根据企业微信官网规范,先对接JS-SDK使用权限签名 官网:JS-SDK使用权限签名算法
SmileNicky
2021/05/18
2.4K1
企业微信系列之JSSDK使用权限签名对接
推荐阅读
相关推荐
企业微信JS-SDK开发(一)------通过config接口注入权限验证配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验