「馬賽克」被很多人稱為是一種罪惡的發明,除了應用在某種不可明說的場景中,在直播過程中的馬賽克卻有很多技術原因,這篇文章將全方位為你解決直播中的「下馬」問題。
繼《直播技術詳解》
本系列會涵蓋的內容包括但不限於如下一些主題:
直播卡頓
首開慢延時高
音畫不同步
馬賽克嚴重
點播拖動不准
直播發熱問題
其他問題(待續)
本文是 《直播疑難雜症排查》系列的第六篇文章,我們重點來看看直播中常見的馬賽克問題。
馬賽克主要是指畫面中出現多處類似小方塊的影象,導致畫面的區域性或者整體看不清楚的情況。
編碼器最重要的五個引數:畫質級別、位元速率、幀率、gop 大小、碼控方式
畫質級別:h.264 有四種畫質級別,baseline profile,extended profile,main profile,high profile。級別越高,壓縮的效果越好,但演算法複雜度更高,導致功耗也更高。
碼控方式:一般編碼器都有固定位元速率(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、龍珠直播等解決過形形色色的問題,我們很樂意廣大技術人與公司能夠通過我們的經驗分享,避免不必要的開發。
10分鐘,讓你徹底明白Promise原理
什麼是promise?本 用定外賣來舉例子,讓你明白。定外賣就是乙個promise,promist的意思就是承諾 我們定完外賣,飯不會立即到我們手中 這時候我們和商家就要達成乙個承諾 在未來,不管飯是做好了還是燒糊了,都會給我們乙個答覆 function orderfood else 5000 你在...
如何在 2 分鐘內入睡
經常失眠?也許你需要120秒入睡法。編者按 對習慣晚睡 失眠或者因種種原因睡眠不足的現代人而言,快速入睡是一種令人羨慕的天賦。睡眠能力強人的人往往白天精力特別旺盛,記憶力和反應力都很出色。實際上,隨時隨地在兩分鐘或者更短的時間內入睡,是完全可以後天訓練獲得的一項技能。那麼,讓我們一起來了解這項二戰時...
10分鐘看明白大M法和兩階段法
相信學習本章節的朋友都是掌握了單純形法後,準備學習大m和兩階段法,但是卻不知道如何下手 亦或是知道大概過程但是又不清楚中間原理如何實現的。那麼這篇文章將會解決以上兩種情況給大家帶來的困惑。首先我們先提出幾個問題 1.為何學過單純形法後還要繼續學習大m法和兩階段法。2.大m法和兩階段法的過程有何不同,...