直播疑难杂症排查(10)— 直播功耗高

简介:

1.  问题现象


直播过程中手机发热严重,耗电快。


2. 问题排查


导致手机功耗高,发热严重的根本因素,无外乎就是一点:CPU/GPU 占用率高,所以,我们首先要分析下,哪些因素会导致 CPU/GPU 占用率高。


2.1 数据量太大


直播主要由:视频采集 -> 视频处理(剪裁、美颜、滤镜) -> 编码 -> 推流 这些环节组成。


在这整个流程中,决定数据量大小的因素有哪些呢 ?


- 视频的尺寸(例如:1280 x 720 的图像,明显要比 320 x 240 的图像处理起来费劲)

- 视频的帧率(例如:每秒 30 帧,明显要比每秒 15 帧,处理起来费劲)


因此,在不影响业务体验的情况下,适当减少视频的尺寸和帧率,是可以明显降低后续环节 CPU/GPU 的负荷的,从而显著降低功耗。


2.2 大量的格式转换


不同的模块对数据格式的要求,往往有差异,比如 Android 摄像头出来的数据大多是 NV21 的,而编码器一般要求 I420 格式的数据;再比如 ffmpeg 解码的视频往往是 YUV 格式,而渲染显示往往需要 RGB 格式,等等。


我们要尽可能减少不同格式之间的数据转换,或者尽可能利用 GPU 来处理一些复杂的格式转换,比如利用 OpenGL 直接渲染 YUV 格式的数据,而不是用 CPU 做一次 YUV -> RGB 的转换,就是一个不错的选择。


2.3 对图像进行放大操作


《直播疑难杂症排查(6)— 马赛克严重》这篇文章有提到,非常不推荐把一个小尺寸的图片 -> 放大 -> 大尺寸图片,这样很容易出现马赛克。


其实,这样的设计,不仅仅是容易出现马赛克,而且在图像放大的过程中,由于涉及到复杂的插值运算,也会非常消耗 CPU。


同理,图像的缩小或者剪裁,同样也会消耗一定的 CPU,只不过相比于图片放大要好点。


因此,最好的办法,就是小心选择摄像头的预览分辨率以及推流的尺寸,尽可能让两者保持一致,这样,才能最大化地节省 CPU 的消耗。


2.4 软编/软解


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


只不过需要小心各种 Android 机型兼容性问题,对于某些奇葩设备,还是加入硬编/硬解黑名单的好。


2.5 其他方面


当然,导致功耗高的因素还有很多,这里就不一一展开说明了,列举如下:


- 人脸识别/美颜/滤镜,对 CPU/GPU 消耗很大

- 代码逻辑中过多的 memory copy 操作

- 后台线程频繁唤醒手机访问网络或者读写 SDCard

- App 的一些动画特效

- 其他等等




本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1940713,如需转载请自行联系原作者
相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
7月前
|
编解码 监控 定位技术
抖音技术分享:抖音Android端手机功耗问题的全面分析和详细优化实践
本文结合抖音的功耗优化实践中产出了一些实验结论,优化思路,从功耗的基础知识,功耗组成,功耗分析,功耗优化等几个方面,对 Android 应用的功耗优化做一个总结沉淀。
367 0
|
定位技术 CDN
开源直播源码平台处理卡顿问题技巧方案
开源直播源码加速器功能就成功实现了,加速器功能有助于提高直播平台的竞争力,并满足用户对高质量、稳定和流畅的直播体验的需求,这也让加速器功能成为开源直播源码平台的重要功能之一。
开源直播源码平台处理卡顿问题技巧方案
|
Web App开发
直播系统源码知识分享:解你忧愁!降低直播延迟的实现
这些方法就是直播系统源码技术降低直播延迟的实现,降低直播延迟与直播系统源码的功能技术一样都是直播系统源码重要的技术,当然,直播系统源码平台还有着许许多多的奥秘,以后我会为大家去破解
直播系统源码知识分享:解你忧愁!降低直播延迟的实现
|
传感器 机器学习/深度学习 编解码
|
缓存 UED
语音直播系统源码, 程序运行缓慢的主要原因分析
语音直播系统源码, 程序运行缓慢的主要原因分析
|
监控 黑灰产治理
直播平台开发干货分享——标准直播及快、慢直播的特性
 所谓自己做直播平台开发,要结合不同的应用场景,相对应的功能、硬件、软件配套技术也不同。根据应用场景的不同,自建直播平台可以分为标准直播、快直播和慢直播。本文将简单地为大家分析一下这三点的特性。
直播平台开发干货分享——标准直播及快、慢直播的特性
|
存储 数据采集 边缘计算
视频聊天源码以一对一直播为主,如何提高直播质量
视频聊天源码熟悉直播不仅要靠流媒体技术、服务器和CDN,还要使用多种功能机制,优化直播功能体验,比如减低直播延迟,提高直播间打开速度等。
|
运维 Java 视频直播
一对一源码开发,一对一直播系统如何在直播领域站稳脚跟
在直播发展的过程中,开发系统的直播源码也发展的越来越成熟稳定,尤其是目前很火热的一对一源码。
一对一源码开发,一对一直播系统如何在直播领域站稳脚跟
|
编解码
何必冥思苦想,直播app开发中延迟的“罪魁祸首”在这
关注直播系统开发的朋友都知道,直播APP开发中的流媒体传输一般流程是采集、前处理、压缩、推流、拉流、解码、播放,这当中每个阶段都是十分重要的,所以为了保证用户观看的及时性,这些流程需要高度协调统一,来减少在线直播的延迟,那么还有那些方面是延迟的影响因素呢?
何必冥思苦想,直播app开发中延迟的“罪魁祸首”在这
|
监控
仿抖音短视频APP源码,告别网络波动,从这三点优化
作为开发团队,在进行仿抖音短视频APP源码开发时,经常会遇到客户问询问,如果网络有问题怎么办?
661 0
仿抖音短视频APP源码,告别网络波动,从这三点优化