直播疑难杂症排查(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 的一些动画特效

- 其他等等

3. 小结

关于功耗高的问题排查大致就介绍道这里了,有任何疑问欢迎来信 [email protected] 交流,另外,欢迎关注我的新浪微博 @卢_俊 或者 微信公众号 @Jhuster 获取最新的文章和资讯。

时间: 2024-12-22 02:07:03

直播疑难杂症排查(10)— 直播功耗高的相关文章

如何解决直播过程中的直播功耗高问题 | 直播疑难杂症排查

继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难杂症排查>,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,希望能够帮助到直播领域的开发者们. 本系列会涵盖的内容包括但不限于如下一些主题: 播放失败 直播卡顿 首开慢 延时高 音画不同步 马赛克严重 播放黑屏.花屏.绿屏 播放杂音.噪音.回声 点播拖动不准 直播发热问题 其他问题(待续) 问题现象 直播过程中手机发热严重,耗电快. 问题排查 导致手机功耗高,发热严重的根本因素,无外乎

直播疑难杂症排查(4)— 延时高

本文是 <直播疑难杂症排查>系列的第四篇文章,我们来看看直播的延时问题. 1. 延时的测量 一般测量延时最简单的方法,就是推流端和播放端对着同一个时钟,然后用播放端显示的时间减去推流端显示的时间,就得到了粗略的直播延时. 2. 延时高问题分析 首先,我们看看可能产生延时的模块有哪些: - 图像处理延时,比如画面剪裁.美颜.特效处理 - 视频编码/解码延时 - 网络传输的延时 - 业务代码中的缓冲区 一般图像处理.数据拷贝.编解码带来的延时,都是 ms 级别的,真正会产生比较大延时的地方,一个是

直播疑难杂症排查(6)— 马赛克严重

本文是 <直播疑难杂症排查>系列的第六篇文章,我们重点来看看直播中常见的马赛克问题. 1. 马赛克问题的表现 马赛克主要是指画面中出现多处类似小方块的图像,导致画面的局部或者整体看不清楚的情况. 2. 马赛克严重的问题排查 2.1 视频编码参数配置原因 视频的画质,是由它的编码质量决定的,压缩得越 "厉害",画质损失就越多,马赛克就越严重. - 哪些关键因素决定了编码器的压缩质量呢 ? 编码器最重要的五个参数:画质级别.码率.帧率.GOP 大小.码控方式 画质级别:H.26

直播疑难杂症排查(5)— 音画不同步

本文是<直播疑难杂症排查>系列的第五篇文章,我们重点来看看直播中常见的音画不同步问题. 1. 音画不同步的表现 很容易判断,就是画面和声音不匹配. 2. 音画同步的基础概念 首先我们要明白一个概念,虽然人的肉眼,很容易辨别音画是否同步的,但是机器则不然,对于播放器而言,它判断一帧视频和一帧音频是否要在同一个时间渲染和播放,依靠的完全是该数据携带的时间戳信息. 如果内容的生产端给音视频数据打的时间戳本身就有问题的话,播放器也往往无能为力了,因此,音画不同步问题,更多的时候,应该从生产端去排查原因

直播疑难杂症排查(2) — 播放卡顿

本文是 <直播疑难杂症排查>系列的第二篇文章,我们主要分析下如何排查播放卡顿问题. 1. 播放卡顿的表现 播放卡顿的表现总结下来包括但不限于以下这些: - 频繁出现缓冲 - 播放不够流畅,画面一卡一卡的 2. 常见播放卡顿问题排查 从代码层面来看,什么是卡顿?其实是指播放器渲染的帧率太低,比如:1s 显示 3-5 帧,或者渲染完一帧后,过很久才渲染下一帧. 因此,我们需要排查,是什么原因导致了播放器无法流畅地渲染数据,通常可能有如下几大类: - 网络带宽不足 - 播放设备性能不足 - 视频流时

《直播疑难杂症排查》之二:播放卡顿

七牛直播云在 2016 年 6 月发布之后,帮助广大客户解决过形形色色的问题,如直播卡顿.马赛克.花屏.黑屏.杂音.音画不同步等等等等,这其中,有一些是网络原因,有一些是开发者的使用姿势问题,有一些是参数配置错误,当然,也有一些是 SDK 本身的问题. 总结下来,如果开发者能够对直播领域的一些基础知识有更深入的了解,掌握一些基本的排障手段,很多问题是能够很快自行解决的,甚至也能够更好地防患于未然. 因此,继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难杂症排查>,我

《直播疑难杂症排查系列》之一 :播放失败

直播疑难杂症排查 - 序 <直播疑难杂症排查系列>会涵盖的内容包括但不限于如下一些主题: 播放失败 直播卡顿 首开慢 延时高 音画不同步 马赛克严重 播放黑屏.花屏.绿屏 播放杂音.噪音.回声 点播拖动不准 直播发热问题 其他问题(待续) 第一篇文章我们从播放开始,因为观看直播最重要的一个环节就是打开播放器,很多问题的直接反馈也是来自观众端. 导致播放失败的原因有很多种,不一定是播放器本身的问题,不过通过播放器,我们很容易反过来排查服务端或者推流端的问题.下面我们会从播放失败的表现.播放问题排

《直播疑难杂症排查》之五: 音画不同步

七牛直播云在 2016 年 6 月发布之后,帮助广大客户如熊猫TV.龙珠直播等解决过形形色色的问题.如直播卡顿.马赛克.花屏.黑屏.杂音.音画不同步等等等等,这其中,有一些是网络原因,有一些是开发者的使用姿势问题,有一些是参数配置错误,当然,也有一些是 SDK 本身的问题.总结下来,如果开发者能够对直播领域的一些基础知识有更深入的了解,掌握一些基本的排障手段,很多问题是能够很快自行解决的,甚至也能够更好地防患于未然. 因此,继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难

直播疑难杂症排查(7)— 黑屏、花屏、闪屏问题

本文是 <直播疑难杂症排查>系列的第七篇文章,我们来重点看看直播中常见的各种黑屏.花屏.闪屏问题. 首先我们要明白,黑屏.花屏.闪屏等问题,可能是推流端的问题,也可能是播放器的问题,遇到这些现象,我们要第一时间用别的播放器(如 VLC,ffplay)试试,如果都出现同样的问题,那么多半是流本身的问题了,反之,则很可能是播放器的问题. 1.  播放黑屏 现象:画面是黑的,没有图像,但是有声音. 1.1 主播端摄像头权限问题 无论 Android 还是 iOS,App 使用摄像头都是需要申请授权的