多是全網最全的移動直播 trouble shooting 手冊(6)——馬賽克嚴重

「馬賽克」被不少人稱爲是一種罪惡的發明,除了應用在某種不可明說的場景中,在直播過程當中的馬賽克卻有不少技術緣由,這篇文章將全方位爲你解決直播中的「下馬」問題。算法

《直播技術詳解》系列文章以後,咱們推出了這個新的系列《直播疑難雜症排查》,把解決直播問題的經驗逐步分享出來,同時也會穿插一些音視頻開發的基礎知識和優化經驗,但願可以幫助到直播領域的開發者們。網絡

本系列會涵蓋的內容包括但不限於以下一些主題:ide

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

1、馬賽克問題的表現

馬賽克主要是指畫面中出現多處相似小方塊的圖像,致使畫面的局部或者總體看不清楚的狀況優化

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

1.視頻編碼參數配置緣由

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

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

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

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

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

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

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

碼控方式:通常編碼器都有固定碼率(CBR) 和 動態碼率(VBR) 兩種碼控方式,前者是指碼率優先,爲了保證碼率儘量穩定,會主動下降畫質,所以容易出現馬賽克,後者是指畫質優先,會優先保證畫質,減小馬賽克,但碼率會浮動很大。

固然,還有一個重要的因素,就是編碼器自己的實現質量,軟編通常能夠保證在不一樣手機上效果一致,而硬編則徹底依賴手機所使用的硬件平臺了。

推薦的編碼器參數配置

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

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

2.圖像尺寸緣由

通常攝像頭採集的圖像分辨率,跟最終推流的尺寸不必定徹底匹配,當攝像頭採集的分辨率大於推流尺寸的時候,須要先對畫面進行 「剪裁」處理,而當攝像頭採集的分辨率大於推流尺寸的時候,則須要先對畫面進行「拉伸」處理,而後再送入編碼器中編碼壓縮。

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

因此,爲了下降馬賽克,咱們必需要保證,攝像頭採集的分辨率,必定要大於最終推流的分辨率。

3.客觀條件緣由

若是主播在光線很是暗的環境下,自己送入編碼器的圖像質量也不會特別好,所以,同等條件下馬賽克也會相對嚴重些。

一樣,若是拍攝的是劇烈晃動的畫面,劇烈變化的畫面信息量也要大不少,所以,編碼的複雜度會明顯增大,若是要保證碼率不會浮動太大,就必然要下降輸出的圖像質量,從而產生馬賽克現象。

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

4.關鍵幀丟失

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


推薦閱讀:
視頻直播技術詳解

相關文章
相關標籤/搜索