直播推流端弱網優化策略 | 直播 SDK 性能優化實踐

直播無疑是 2016 年的大熱話題,七牛雲在 6 月底發佈了實時流網絡 LiveNet 和直播雲解決方案後,咱們用《直播技術詳解》系列文章系統地介紹了直播各個環節的關鍵技術,幫助視頻直播創業者們更全面、深刻地瞭解直播技術,更好地技術選型。性能優化

《直播 SDK 性能優化實踐》系列文章是介紹七牛雲在直播 SDK 上的技術創新實踐。歡迎探討。網絡

弱網優化的場景

網絡直播行業通過一年多的快速發展,衍生出了各類各樣的玩法。最先的網絡直播是主播坐在 PC 前,安裝好專業的直播設備(如攝像頭和麥克風),而後才能開始直播。後來隨着手機性能的提高和直播技術的進步,主播只須要有手機和有網絡就能夠直播。直播發展到如今,單一的室內聊天互動直播已經沒法知足觀衆的需求。主播們開始走向戶外,在更多的場景下直播。機器學習

在能夠預見的將來,這種直播形式會快速發展。直播的內容會更優質,直播的形式也會從單純的娛樂轉向體驗。ide

直播想延伸到戶外須要克服不少困難,而最主要的困難就是應對不穩定的網絡。移動網絡下,一般容易遇到網絡不穩定,鏈接被重置,斷線重連,一方面頻繁重連,創建鏈接須要開銷。另外一方面尤爲是發生 GPRS/2G/3G/4G 切換時,帶寬可能出現瓶頸。當帶寬不夠,幀率較高/碼率較高的內容較難發送出去,這個時候就須要咱們在不一樣網絡情況執行不一樣的策略編碼推流,讓觀衆能夠看到最優質的直播視頻。工具

直播無疑是 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%: 圖像說明文字

結語

弱網優化在直播領域是一個很是值得深挖的功能。雖然網絡質量一直在升級,可是觀衆的要求也會愈來愈高。如何根據網絡情況動態變化調整到最佳觀看體驗碼流是一門藝術。

這裏還能夠展開更前沿的展望,好比咱們把動態調整的策略作成一個放在雲端的庫。而每一個終端會反饋弱網優化策略的使用結果,這些海量的結果數據能夠經過機器學習建模出更優質的策略,最後把這些策略又回饋到各個終端。

相關文章
相關標籤/搜索