當前位置:
首頁 > 最新 > 騎兵變步兵?10 分鐘搞明白如何在直播中去馬賽克

騎兵變步兵?10 分鐘搞明白如何在直播中去馬賽克

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

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

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

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

馬賽克問題的表現

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

馬賽克嚴重的問題排查

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.圖像尺寸原因

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

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

所以,為了降低馬賽克,我們必須要保證,攝像頭採集的解析度,一定要大於最終推流的解析度。

3.客觀條件原因

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

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

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

4.關鍵幀丟失

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

七牛直播雲在 2016 年 6 月發布之後,已幫助客戶如熊貓TV、龍珠直播等解決過形形色色的問題,我們很樂意廣大技術人與公司能夠通過我們的經驗分享,避免不必要的開發。

關注公眾號七 牛 雲,第一時間聆聽「播放黑屏、花屏、綠屏」的經驗!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 七牛雲 的精彩文章:

端午節的這條推送僅對最「牛」的技術人可見

TAG:七牛雲 |

您可能感興趣

步兵對陣騎兵, 為何很少去砍馬蹄?
揭秘步兵如何對抗騎兵衝擊?八百先登與白馬義從
哥薩克騎兵,如何成為幾百年來全世界最強騎兵?
明明騎兵克制步兵,為何朱棣卻能用步兵擊垮囂張千年的北方鐵騎?
岳飛的背嵬軍有多強?逢戰必勝且打敗10倍敵人,步兵直接砍翻騎兵
為何說「百年來步兵難敵騎兵」?騎兵面對步兵,當真無敵么?
古代騎兵如此強大,蒙古騎兵橫掃歐亞,看古代步兵如何對抗騎兵
漢軍多驍勇,看了李陵用步兵克制匈奴騎兵多日就明白了
瘋狂將軍以五千步兵對八萬騎兵,激戰八天八夜,如此強悍為何投降
步兵真的擋不住騎兵衝鋒嗎?侯景帶著800騎兵說是,陳霸先卻不服
騎兵和步兵哪個戰力強?敵人來了300騎兵,李世民只派200步兵出戰
騎兵長了對翅膀?16世紀波蘭翼騎兵的崛起,猶如天兵,所向無敵
古代10萬重騎兵對戰現代十輛99式坦克,重騎兵必勝?
據傳李陵能用五千步兵戰數萬匈奴騎兵 宋軍步兵為何不行?
步兵革命:中世紀的步兵何以戰勝剋星騎兵
馬木留克騎兵為何能多次擊敗蒙古騎兵?
▲漢朝李陵五千步兵如何輕鬆做掉匈奴單于的三萬鐵馬騎兵 ?
成吉思汗用10萬騎兵對陣秦始皇加霍去病和項羽加二十萬步兵和三萬騎兵,誰能會贏呢?
古代戰場上,步兵面對騎兵只能等死嗎?「卻月陣」讓騎兵全軍覆沒
五千步兵對八萬騎兵的漢匈浚稽山之戰