直播推流端弱網優化策略 | 直播 SDK 效能優化實踐
直播無疑是 2016 年的大熱話題,七牛雲在 6 月底釋出了實時流網路 LiveNet 和直播雲解決方案後,我們用《直播技術詳解》系列文章系統地介紹了直播各個環節的關鍵技術,幫助視訊直播創業者們更全面、深入地瞭解直播技術,更好地技術選型。
《直播 SDK 效能優化實踐》系列文章是介紹七牛雲在直播 SDK 上的技術創新實踐。歡迎探討。
弱網優化的場景
網路直播行業經過一年多的快速發展,衍生出了各種各樣的玩法。最早的網路直播是主播坐在 PC 前,安裝好專業的直播裝置(如攝像頭和麥克風),然後才能開始直播。後來隨著手機效能的提升和直播技術的進步,主播只需要有手機和有網路就可以直播。直播發展到現在,單一的室內聊天互動直播已經無法滿足觀眾的需求。主播們開始走向戶外,在更多的場景下直播。
在可以預見的未來,這種直播形式會快速發展。直播的內容會更優質,直播的形式也會從單純的娛樂轉向體驗。
直播想延伸到戶外需要克服很多困難,而最主要的困難就是應對不穩定的網路。行動網路下,通常容易遇到網路不穩定,連線被重置,斷線重連,一方面頻繁重連,建立連線需要開銷。另一方面尤其是發生 GPRS/2G/3G/4G 切換時,頻寬可能出現瓶頸。當頻寬不夠,幀率較高/位元速率較高的內容較難傳送出去,這個時候就需要我們在不同網路狀況執行不同的策略編碼推流,讓觀眾可以看到最優質的直播視訊。
弱網優化的原理
思路一:
根據上行頻寬的狀況來調整位元速率、FPS、解析度
弱網優化其實有一個概念性的東西,我們如何評價一個推流方案,它的弱網優化好不好?首先我們要知道三個概念,這個是和解碼器相關的,位元速率(BitRate)、FPS(video frame per second)、解析度(VideoSize)。
人們對視訊流的感受集中在卡頓、模糊等消極的情況,在 UGC 、 PGC 的直播場景中,這些情況時常發生。直播推流對實時性的要求很高,為了保證實時性,在網路頻寬不足或者上行速度不佳的情況下,都需要做出選擇。要麼選擇更好的流暢度但犧牲清晰度(模糊),要麼選擇更好的清晰度但犧牲流暢度(卡頓)。當選定了一個解析度後,推流過程中就不會對解析度做變更,但可以對位元速率和 FPS 做出調節,從而達到上述兩種情況的選擇。
通過這個關聯,我們就可以容易的知道該如何從技術層面做出調整。在追求更好的流暢度時,我們可以適當降低位元速率。如果 FPS 已經較高(如 30)時,可以維持 FPS 不變更;如果此時因位元速率太低而畫面無法接受,可以再適當調低 FPS。在追求更清晰的畫質時,可以提高位元速率,FPS 調節至 24 左右人眼大多還會識別為流暢。如果可以接受有輕微卡頓,那麼可以將 FPS 設定的更低,比如 20 甚至 15。
總之,這三者之間一起構建了畫面清晰和視訊流暢的感覺,但最終引數是否能滿意需要不斷調整和調優,從而滿足產品層面的需求。
思路二:
通過高壓縮比的編碼技術,比如:H.265
當然動態調整編碼策略是一種應對方式,而直接提高視訊流的壓縮比降低直播對網路的要求也是一種策略。目前如果使用 H.265 編碼就可以降低 40% 的頻寬佔用。但是目前的在手機直播上用 H.265 編碼還有很多的問題要解決。比如 H.265 編碼對移動端來說效能開銷過大,相繼會帶來的問題還有發熱過高、掉電過快等問題。
七牛在弱網優化上做了什麼
很顯然弱網優化在目前多樣化的直播行業中是一個非常有用功能,所以七牛直播雲的 SDK 也在這方面做出了大量的努力,下面可以分享下思路和效果。
根據大量客戶的反饋定製優秀的弱網優化策略
所謂弱網優化的本質是一種策略。而弱網優化的效果取決於以下兩點:
1)更精確和細粒度的檢測網路的狀況,便於推流端 SDK 調整引數。
2)更豐富的策略和更合理的選擇。當 SDK 精確的反饋了網路的狀況,我們需要做出正確的判斷選擇出一種合適的策略來應對。
要做到以上兩點,就需要有大量的使用者反饋來驗證策略的可靠性和效果。七牛直播雲已經通過了很多客戶的驗證,而且整合七牛直播推流 SDK 時不需要做任何的配置,預設就會開啟這個功能。
極其優秀的優化效果
弱網優化報告-iOS
測試目標:比較七牛和某著名直播 App 在弱網下的直播表現
測試範圍:七牛 iOS 推流 demo 、某著名直播 App
測試策略:使用 atc 弱網工具模擬 10%的丟包率的網路,同時使用七牛 demo 和某著名直播 App 直播時鐘走時 5 分鐘,並使用 SrsPlayer 播放(播放器引數相同),分別檢視播放效果,統計卡頓次數。
測試結果:好網丟包率 10% 的情況下,七牛 iOS 的表現稍優於某著名直播 App 的 iOS 端。
弱網優化報告-Android
測試目標:比較 Android 端七牛和著名直播 App 在弱網下直播的表現
測試範圍:七牛 Android 推流 demo、某著名直播 App 的 Android 端
測試策略:分別從限制上下行和設定丟包率的角度進行弱網的模擬。具體設定的弱網環境,見以下內容。
使用 atc 弱網工具分別模擬 3G 網和好網下 10% 丟包率的網路,同時使用七牛 Android 推流 demo、某著名直播 App 的 Android 端、直播時鐘走時 5 分鐘,並使用 SrsPlayer 播放,分別檢視播放效果,統計卡頓次數。
測試結果: 3G 弱網丟包率 0 的情況下,七牛 Android 的表現優於某著名直播 App 的 Android 端。 好網丟包率 10% 的情況下,七牛 Android 的表現稍優於某著名直播 App 的 Android 端。
測試資料: 3G 網路: 1)3G 網丟包率 0(上行 420 Kbps,下行 850 Kbps):
2)好網丟包率 10%:
結語
弱網優化在直播領域是一個非常值得深挖的功能。雖然網路質量一直在升級,但是觀眾的要求也會越來越高。如何根據網路狀況動態變化調整到最佳觀看體驗碼流是一門藝術。
這裡還可以展開更前沿的展望,比如我們把動態調整的策略做成一個放在雲端的庫。而每個終端會反饋弱網優化策略的使用結果,這些海量的結果資料可以通過機器學習建模出更優質的策略,最後把這些策略又回饋到各個終端。
相關文章
- 手遊錄屏直播技術詳解 | 直播 SDK 效能優化實踐優化
- 詳談[七牛直播雲]效能優化實踐優化
- SOFARPC 效能優化實踐(上)| SOFAChannel#2 直播整理RPC優化
- SOFARPC 效能優化實踐(下)| SOFAChannel#3 直播整理RPC優化
- HBase最佳實踐-讀效能優化策略優化
- 直播分享| 騰訊雲 MongoDB 智慧診斷及效能優化實踐MongoDB優化
- 桌面端前端效能優化策略前端優化
- 【效能優化實踐】優化打包策略提升頁面載入速度優化
- 直播APP的效能優化-禮物篇APP優化
- 前端效能優化 —— 移動端瀏覽器優化策略前端優化瀏覽器
- 前端效能優化之移動端瀏覽器優化策略前端優化瀏覽器
- 直播APP原始碼,直播系統推流SDK(Android)APP原始碼Android
- 效能優化,實踐淺談優化
- gprof的效能優化實踐優化
- SAP ABAP 效能優化實踐優化
- TiDB 效能分析&效能調優&優化實踐大全TiDB優化
- 圖片視訊瀑布流長列表效能優化實踐優化
- ⚠️Flutter 效能優化實踐 總結⚠️Flutter優化
- Canvas 動畫的效能優化實踐Canvas動畫優化
- FlutterWeb效能優化探索與實踐FlutterWeb優化
- 前端效能優化原理與實踐前端優化
- 讀小程式效能優優化實踐-筆記優化筆記
- 前端效能優化之桌面瀏覽器優化策略前端優化瀏覽器
- 前端效能優化——桌面瀏覽器前端優化策略前端優化瀏覽器
- Hibernate效能優化策略 (網上找的)優化
- 眾多業內大佬推薦閱讀!!《Java效能優化實踐:JVM調優策略、工具與技巧》已上市~~Java優化JVM
- 海量之道之弱聯網優化優化
- Vue 專案效能優化 — 實踐指南Vue優化
- 基於 PageSpeed 的效能優化實踐優化
- hadoop JOB的效能優化實踐Hadoop優化
- 美拍直播首屏耗時減少50%以上的優化實踐優化
- iOS效能優化系列篇之“列表流暢度優化”iOS優化
- Tree-Shaking效能優化實踐 - 實踐篇優化
- 前端效能優化實踐 之 百度App個人主頁優化前端優化APP
- 網站效能優化網站優化
- 網頁效能優化網頁優化
- 【前端效能優化】vue效能優化前端優化Vue
- 網站效能優化實戰(二)網站優化