1. 程式人生 > >直播疑難雜癥排查(6)— 馬賽克嚴重

直播疑難雜癥排查(6)— 馬賽克嚴重

直播 馬賽克 花屏 碼率 編碼器

本文是 《直播疑難雜癥排查》系列的第六篇文章,我們重點來看看直播中常見的馬賽克問題。


1. 馬賽克問題的表現


馬賽克主要是指畫面中出現多處類似小方塊的圖像,導致畫面的局部或者整體看不清楚的情況。


技術分享


2. 馬賽克嚴重的問題排查


2.1 視頻編碼參數配置原因


視頻的畫質,是由它的編碼質量決定的,壓縮得越 “厲害”,畫質損失就越多,馬賽克就越嚴重。


- 哪些關鍵因素決定了編碼器的壓縮質量呢 ?


編碼器最重要的五個參數:畫質級別、碼率、幀率、GOP 大小、碼控方式


畫質級別:H.264 有四種畫質級別,Baseline profile,Extended profile,Main profile,High profile,級別越高,壓縮的效果越好,但算法復雜度更高,導致功耗也更高。


碼率:決定了視頻被壓縮的程度,碼率越低,丟失的信息也就越多,畫質也就越差。但是,帶來的好處是占用的網絡帶寬會比較小,容易在互聯網上傳輸,不容易出現卡頓。


幀率:決定了視頻的流暢性,幀率越高,視頻越流暢,但每秒鐘編碼器要處理的數據量也就越大,同等碼率下壓縮出來的視頻質量就越差。


GOP 大小:決定了視頻的延時,GOP 越小,延時就越小,但 GOP 小帶來的問題是關鍵幀數量多,數據量變大,因此,同等碼率下壓縮出來的視頻質量就會越差。


碼控方式:一般編碼器都有固定碼率(CBR) 和 動態碼率(VBR) 兩種碼控方式,前者是指碼率優先,為了保證碼率盡可能穩定,會主動降低畫質,因此容易出現馬賽克,後者是指畫質優先,會優先保證畫質,減少馬賽克,但碼率會浮動很大。


當然,還有一個重要的因素,就是編碼器本身的實現質量,軟編一般可以保證在不同手機上效果一致,而硬編則完全依賴手機所使用的硬件平臺了。


- 推薦的編碼器參數配置


一般直播場景中,考慮到手機性能和功耗,一般畫質級別采用的是 Baseline profile,GOP 通常設置為 1~3s,幀率一般在 15~24 幀,而碼率的配置,則需要根據推流的分辨率來決定,推薦的分辨率和碼率配置關系如下圖所示(來自:《Video Encoding Settings for H.264 Excellence》):


技術分享

總之,關於視頻編碼與馬賽克的關系,我們只需要記住一個原則:送入編碼器的數據量越大,編碼壓縮得越 “厲害”,丟失的圖像信息也就越多,數據解碼後的產生馬賽克也就越 “厲害”。


2.2 圖像尺寸原因


一般攝像頭采集的圖像分辨率,跟最終推流的尺寸不一定完全匹配,當攝像頭采集的分辨率大於推流尺寸的時候,需要先對畫面進行 “剪裁” 處理,而當攝像頭采集的分辨率大於推流尺寸的時候,則需要先對畫面進行 “拉伸” 處理,然後再送入編碼器中編碼壓縮。


技術分享

例如:小尺寸的畫面(比如:640 x 480),拉伸到大的尺寸(比如:1280 x 720),則很容易會產生模糊和馬賽克,這樣的畫面再送入編碼器中編碼,無論怎樣配置都無法再改善已經產生的馬賽克了。


所以,為了降低馬賽克,我們必須要保證,攝像頭采集的分辨率,一定要大於最終推流的分辨率。


2.3 客觀條件原因


如果主播在光線非常暗的環境下,本身送入編碼器的圖像質量也不會特別好,因此,同等條件下馬賽克也會相對嚴重些。


同樣,如果拍攝的是劇烈晃動的畫面,劇烈變化的畫面信息量也要大很多,因此,編碼的復雜度會明顯增大,如果要保證碼率不會浮動太大,就必然要降低輸出的圖像質量,從而產生馬賽克現象。


如果直播應用是主打這種光線暗的場景或者劇烈運動的畫面場景的話,為了降低馬賽克,可以考慮適當將編碼參數配置得 “高” 一點(比如:碼率高一點,幀率低一點等等),留出充分的 “富余” 空間,以抵抗環境因素帶來的影響。


2.4 關鍵幀丟失


還有一種馬賽克現象,是由於視頻流中丟失了關鍵幀,導致播放器解碼後花屏,從現象來看有點像馬賽克,但實際上跟上面討論的不是同一個問題,我們將在後續的文章中專門討論這個花屏問題。


3. 小結


關於直播馬賽克嚴重的問題排查大致就介紹道這裏了,有任何疑問歡迎來信 [email protected] 交流,另外,歡迎關註我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。


技術分享

本文出自 “Jhuster的專欄” 博客,請務必保留此出處http://ticktick.blog.51cto.com/823160/1928777

直播疑難雜癥排查(6)— 馬賽克嚴重