《直播疑難雜症排查》之十:直播功耗高
《直播疑難雜症排查》系列已經更新了 9 篇,我們為使用者分析了視訊直播過程中出現的問題,並一一作出排查。此次我們重點看看直播過程中出現的直播功耗高的問題。
繼《直播技術詳解》系列文章之後,我們推出了這個新的系列《直播疑難雜症排查》,把解決直播問題的經驗逐步分享出來,同時也會穿插一些音視訊開發的基礎知識和優化經驗,希望能夠幫助到直播領域的開發者們。
本系列會涵蓋的內容包括但不限於如下一些主題: - 播放失敗
直播發熱問題
其他問題(待續)
問題現象
直播過程中手機發熱嚴重,耗電快。
問題排查
導致手機功耗高,發熱嚴重的根本因素,無外乎就是一點:CPU/GPU 佔用率高,所以,我們首先要分析下,哪些因素會導致 CPU/GPU 佔用率高。
1.資料量太大
直播主要由:視訊採集 -> 視訊處理(剪裁、美顏、濾鏡) -> 編碼 -> 推流 這些環節組成。
在這整個流程中,決定資料量大小的因素有哪些呢 ? - 視訊的尺寸(例如:1280 x 720 的影像,明顯要比 320 x 240 的影像處理起來費勁) - 視訊的幀率(例如:每秒 30 幀,明顯要比每秒 15 幀,處理起來費勁)
因此,在不影響業務體驗的情況下,適當減少視訊的尺寸和幀率,是可以明顯降低後續環節 CPU/GPU 的負荷的,從而顯著降低功耗。
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 的一些動畫特效 - 其他等等
相關文章
- 直播疑難雜症排查 — 序
- 《直播疑難雜症排查》之二:播放卡頓
- 《直播疑難雜症排查》之五: 音畫不同步
- 《直播疑難雜症排查》之三:首開慢
- 《直播疑難雜症排查系列》之一 :播放失敗
- 如何在直播中解決黑屏、花屏、閃屏問題 | 直播疑難雜症排查
- 如何解決直播中雜音、噪音和回聲問題 | 直播疑難雜症安排
- 程式疑難雜症之1快取快取
- android 疑難雜症Android
- SpringCloud疑難雜症SpringGCCloud
- docker的疑難雜症Docker
- 遊戲研發疑難雜症(3)遊戲
- TCP協議疑難雜症全景解析TCP協議
- 【故障排查】10分鐘解決Quartz重複排程的疑難雜症quartz
- 淺析TCP協議中的疑難雜症TCP協議
- Android 蹲坑的疑難雜症集錦一Android
- Ask Tom!解決你的Oracle疑難雜症Oracle
- 通透,23 個問題 TCP 疑難雜症全解析TCP
- 前端除錯:記Iscroll4 疑難雜症之z-index失效前端除錯Index
- GPDB-疑難雜症-使用資源組入庫OOMOOM
- 一頁解決字串常量池相關疑難雜症字串
- 4/25蝦皮面試準備 Hadoop疑難雜症面試Hadoop
- Flutter 疑難雜症系列:實現中文文字的垂直居中Flutter
- Android 蹲坑的疑難雜症集錦(兼 Gradle) 二AndroidGradle
- 只需兩個函式終結狀態列疑難雜症函式
- 遊戲研發疑難雜症(4)摳細節成死結遊戲
- 疑難雜症1-去掉網站裡的特殊編碼網站
- 這篇文章,專治MQ中介軟體各種疑難雜症MQ
- 阿里雲 ANT DESIGN PRO 開發筆記 - 疑難雜症阿里筆記
- 【H5疑難雜症】脫離文件流時的渲染BUGH5
- 技巧: 使用truss、strace或ltrace診斷軟體的"疑難雜症"
- Flutter 疑難雜症系列:鍵盤原理及常見問題解決方案Flutter
- R8疑難雜症分析實戰 - 類反射篇|得物技術反射
- iOS 疑難雜症 — — UITableView 新增 tableFooterView 旋轉螢幕後收不到點選事件!!!...iOSUIView事件
- Ubuntu18.04 顯示卡驅動安裝(解決各種疑難雜症)Ubuntu
- 遊戲直播下半場的焦慮症遊戲
- SQL疑難雜症【2】解決SQL訂閱過程中找不到已經建立的訂閱SQL
- 遊戲研發疑難雜症:1000萬夠做遊戲,為何3000萬不夠?遊戲