咱們須要避免移動直播場景的坑,那麼該如何採起相應的規避措施?今天本篇內容爲你們闡述。網絡
1不一樣芯片平臺上的編碼差別性能
iOS 平臺上不管硬編仍是軟編,因爲是 Apple 一家公司出廠,幾乎不存在由於芯片平臺不一樣而致使的編碼差別。編碼
然而,在 Android 平臺上,Android Framework SDK 提供的 MediaCodec 編碼器,在不一樣的芯片平臺上,差別表現很大, 不一樣的廠家使用不一樣的芯片,而不一樣的芯片平臺上 Android MediaCodec 表現略有差別,一般實現全平臺兼容的成本不低。spa
另外就是 Android MediaCodec 硬編層面的 H.264 編碼畫質參數是固定的 baseline,因此畫質一般也通常。所以,在 Android 平臺下,推薦是用軟編,好處是畫質可調控,兼容性也更好。視頻
2低端設備如何上高性能地採集和編碼?圖片
例如 Camera 採集輸出的多是圖片,一張圖的體積並不會小,若是採集的頻次很高,編碼的幀率很高,每張圖都通過編碼器,那麼編碼器又可能會出現過載。這個時候,能夠考慮在編碼前,不影響畫質的前提下(前面咱們講過幀率的微觀意義),進行選擇性丟幀,以此下降編碼環節的功耗開銷。開發
3弱網下如何保障高清流暢推流直播
移動網絡下,一般容易遇到網絡不穩定,鏈接被重置,斷線重連,一方面頻繁重連,創建鏈接須要開銷。另外一方面尤爲是發生 GPRS / 2G / 3G / 4G 切換時,帶寬可能出現瓶頸。當帶寬不夠,幀率較高/碼率較高的內容較難發送出去,這個時候就須要可變碼率支持。it
即在推流端,可檢測網絡狀態和簡單測速,動態來切換碼率,以保障網絡切換時的推流流暢。class
其次編碼、封包、推流 這一部分的邏輯也能夠作微調,能夠嘗試選擇性丟幀,好比優先丟視頻參考幀(不丟 I 幀和音頻幀 ),這樣也能夠減小要傳輸的數據內容,但同時又達到了不影響畫質和版視聽流暢的目的。
4須要區分直播流的狀態和業務狀態
直播是媒體流、APP 的交互是 API 信令流,二者的狀態不能混爲一談。尤爲是不能基於 APP 的交互的 API 狀態來判斷直播流的狀態。
以上是移動直播場景下常見的幾個坑和規避措施。圖玩智能科技爲企業提供直播平臺二次開發服務,搭建更完善更妥當的直播系統,歡迎隨時諮詢www.toivan.com.