多是全网最全的移动直播 trouble shooting 手册(10)—— 直播功耗高

《直播疑难杂症排查》系列已经更新了 9 篇,咱们为用户分析了视频直播过程当中出现的问题,并一一做出排查。这次咱们重点看看直播过程当中出现的直播功耗高的问题。网络

《直播技术详解》系列文章以后,咱们推出了这个新的系列《直播疑难杂症排查》,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,但愿可以帮助到直播领域的开发者们。性能


本系列会涵盖的内容包括但不限于以下一些主题:优化

问题现象

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

问题排查

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

1.数据量太大线程

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

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

  • 视频的尺寸(例如:1280 x 720 的图像,明显要比 320 x 240 的图像处理起来费劲)
  • 视频的帧率(例如:每秒 30 帧,明显要比每秒 15 帧,处理起来费劲)

所以,在不影响业务体验的状况下,适当减小视频的尺寸和帧率,是能够明显下降后续环节 CPU/GPU 的负荷的,从而显著下降功耗。cdn

2.大量的格式转换视频

不一样的模块对数据格式的要求,每每有差别,好比 Android 摄像头出来的数据大可能是 NV21 的,而编码器通常要求 I420 格式的数据;再好比 ffmpeg 解码的视频每每是 YUV 格式,而渲染显示每每须要 RGB 格式,等等。

咱们要尽量减小不一样格式之间的数据转换,或者尽量利用 GPU 来处理一些复杂的格式转换,好比利用 OpenGL 直接渲染 YUV 格式的数据,而不是用 CPU 作一次 YUV -> RGB 的转换,就是一个不错的选择。

3.对图像进行放大操做

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

其实,这样的设计,不只仅是容易出现马赛克,并且在图像放大的过程当中,因为涉及到复杂的插值运算,也会很是消耗 CPU。

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

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

4.软编/软解

这个缘由或许你们都懂,软编/软解靠的是 CPU,很是耗性能,而硬编/硬解是使用专门的硬件编解码器模块,会显著下降 CPU 的负担,相对而言,会省电不少。

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

5.其余方面

固然,致使功耗高的因素还有不少,这里就不一一展开说明了,列举以下:

  • 人脸识别/美颜/滤镜,对 CPU/GPU 消耗很大
  • 代码逻辑中过多的 memory copy 操做
  • 后台线程频繁唤醒手机访问网络或者读写 SDCard
  • App 的一些动画特效
  • 其余等等

活动推荐
七牛开启史上最大的促销哦活动,首充送1500,最高送8000!

相关文章
相关标签/搜索