美文网首页直播
直播专题问题排查-功耗高(九)

直播专题问题排查-功耗高(九)

作者: GitArtOS | 来源:发表于2020-06-09 20:22 被阅读0次

    直播功耗高

    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 对图像进行放大操作
    非常不推荐把一个小尺寸的图片 -> 放大 -> 大尺寸图片,这样很容易出现马赛克

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

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

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

    2.4 软编/软解
    这个原因或许大家都懂,软编/软解靠的是 CPU,非常耗性能,而硬编/硬解是使用专门的硬件编×××模块,会显著降低 CPU 的负担,相对而言,会省电很多。
    只不过需要小心各种 Android 机型兼容性问题,对于某些奇葩设备,还是加入硬编/硬解黑名单的好。
    2.5 其他方面
    当然,导致功耗高的因素还有很多,这里就不一一展开说明了,列举如下:

    相关文章

      网友评论

        本文标题:直播专题问题排查-功耗高(九)

        本文链接:https://www.haomeiwen.com/subject/hpietktx.html