科普 | 影片直播的GoP Size設定成多少合適?
在影片直播中,首屏開啟速度直接關係到使用者體驗,其中Group of Picture(GoP)設定、快取引數最佳化格外關鍵。
出現黑屏的原因很簡單,就是解碼器沒有得到能解碼出影片影像的資料,那麼導致這個問題的原因就很容易定位了:比較搞笑一點的說法就是你家的網路比較慢;影片直播伺服器沒有開啟關鍵幀緩衝。
確實是這樣。瞬間得到的資料正好是個I幀。就可以達到秒開的效果。
對於H.264來講,我們常見的有I幀,P幀,和B幀。IDR幀是I幀,但I幀並不一定是IDR幀。直播延遲好的編解碼策略。
影片解碼器緩衝區開始的第一個幀肯定是I幀,這個毋庸置疑。
一般來講,對於手機直播,一到兩秒可能是比較合適的,因為它本身的GoP時間也不會很長,我這邊緩衝,一旦出現問題大概一到兩秒這個影片也能出來。有一個不太好的地方就是它位元速率會稍微高一些,也就說同樣的東西,如果我把GoP改成十秒,我可能是500K,但是我改成一秒,有可能變成一個六七百K的樣子,這個還是跟編碼有關係,具體的比例是多少,可能跟實際相關。
另外如果是點播的話,不關心首屏開啟時間,只要是客戶端下來速度快,CDN給力,那麼我可能要求更小的範圍。告訴大家一個實踐過程中得出的結果,大家用過OBS?
比如說做主播的話,大家用OBS會比較多,OBS它有一個問題就是它預設的話,如果你不調它的特性,GoP就是10秒,10秒的意思就是說GoP size。如果比較點背的話,看的是10秒之前的,如果是比較大的話,它的位元速率,碼流的大小會小點,但是延遲會稍微高一些,CDN開了幾個cache,有些情況下,我們也可以做些轉碼,強行把它的GoP size壓小,整個CDN層面上加一個轉碼的話,它可能會增高這個延遲,這塊一個開放性問題,大家可以根據自己的場景去思考,這個GoP Size配成多大比較合適。
FFmpeg的資料結構裡會標著PTS和DTS:PTS,PresentationTime Stamp也就說這個幀什麼時候會放在顯示器上;DTS就是Decode Time Stamp,就是說這個幀什麼時候被放在編碼器去解。那麼如果全是I幀和P幀,PTS和DTS都是單調遞增的。
解碼器相關的概念,位元速率(BitRate)、FPS(video frame per second)、解析度(VideoSize),不斷調整和調優、最佳化:
在追求更好的流暢度時,我們可以適當降低位元速率。如果 FPS 已經較高(如 30)時,可以維持 FPS 不變更;如果此時因位元速率太低而畫面無法接受,可以再適當調低 FPS。在追求更清晰的畫質時,可以提高位元速率,FPS 調節至 24 左右人眼大多還會識別為流暢。如果可以接受有輕微卡頓,那麼可以將 FPS 設定的更低,比如 20 甚至 15。
動態調整編碼策略是一種應對方式,而直接提高影片流的壓縮比降低直播對網路的要求也是一種策略。目前如果使用 H.265 編碼就可以降低 40% 的頻寬佔用,但比如 H.265 編碼對移動端來說效能開銷過大,相繼會帶來的問題還有發熱過高、掉電過快等問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559352/viewspace-2564571/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 域名解析中的TTL值設定多少合適?
- 域名解析TTL是什麼意思 TTL值設定為多少合適?
- log_buffer的值設定多大合適
- local + uniform size 設定ORM
- win10虛擬記憶體設定多少合適_win10電腦虛擬記憶體如何設定Win10記憶體
- win10虛擬記憶體怎麼設定最好 win10虛擬記憶體設定多少合適?Win10記憶體
- 影片直播app原始碼,VBA 之Interior 物件設定底色APP原始碼物件
- 影片直播原始碼,Android TextView設定跑馬燈效果原始碼AndroidTextView
- win10系統16g記憶體推薦虛擬記憶體設定多少合適Win10記憶體
- 中科三方:DNS解析如何設定合適的TTL值?DNS
- 短影片直播APP原生開發直播系統無加密搭建定製短影片APP加密
- font-size設定為100%的作用
- Theisle伺服器多少錢?Theisle如何選擇合適的配置?伺服器
- 【科普】Hiit 原理及適用
- Oracle11g的SGA和PGA設定為多大最合適?Oracle
- redis操作中hash結構可以存多少key合適Redis
- windows10怎麼把影片設定成動態桌布Windows
- 選擇合適的軟體管理影片製作排期
- 阿里巴巴Java開發手冊建議建立HashMap時設定初始化容量,但是多少合適呢?阿里JavaHashMap
- 遊戲伺服器啟動多少個執行緒合適遊戲伺服器執行緒
- 如何確定敏捷是否適合你的團隊?敏捷
- win10 c盤一般留多大合適 c盤留多少空間合適win10Win10
- 兩款超好用的影片翻譯軟體,適合兩種不同場景,必有一款適合你
- 定製直播軟體,分散式鎖的演進你瞭解多少?分散式
- 短影片APP社交無加密直播定製功能需求APP加密
- 企業官網開發一套多少錢才合適?
- 學習網路安全多少錢?適合哪些人學習?
- linux下core file size設定筆記Linux筆記
- 影片直播系統原始碼,例項原始碼系列-設定系統時間原始碼
- 短影片直播功能開發定製短影片系統功能需求無加密加密
- DNS入門學習:什麼是TTL值?如何設定合適的TTL值?DNS
- Oracle中db_16k_cache_size的設定測試Oracle
- SHARED_POOL_RESERVED_SIZE引數的設定及作用
- 怎樣設計合適的介面(1) (轉)
- 怎樣設計合適的介面(2) (轉)
- 如何確定自己是否適合做程式設計師?程式設計師的成長需要什麼?程式設計師
- 學Python能掙多少錢?哪些人適合學Python?Python
- app直播原始碼,ButtonTextView的背景設定APP原始碼TextView