阿里云 RTC QoS 弱网对抗之变分辨率编码
作者|安基程、田偉峰
審校| 泰一
視頻編碼中的變分辨率問題及解決
變分辨率在弱網(wǎng)場(chǎng)景的實(shí)際應(yīng)用中非常常見,網(wǎng)絡(luò)狀況不好的時(shí)候降低分辨率可以降低碼率,減少塊效應(yīng),網(wǎng)絡(luò)好的時(shí)候增加分辨率可以提升清晰度及主觀體驗(yàn)。
目前主流的視頻編碼標(biāo)準(zhǔn),比如 H.264、H.265,在編碼過程中如果要進(jìn)行分辨率切換,則必須要先編碼一個(gè) I 幀,而 I 幀只能使用幀內(nèi)預(yù)測(cè),編碼效率低下。這在弱網(wǎng)變分辨率的時(shí)候就容易造成卡頓。下圖中展示了每秒鐘切換分辨率的碼率波動(dòng)效果,高低兩個(gè)分辨率,每秒鐘切換一次。
上圖中橫坐標(biāo)表示編碼的幀數(shù),縱坐標(biāo)表示每幀的大小,圖中最高的 4 個(gè)尖峰表示從低分辨率切換到高分辨率時(shí)編的 I 幀,在這 4 個(gè)尖峰中間的較低尖峰是從高分辨率切換到低分辨率編碼的 I 幀。可見編碼 I 幀帶來的碼率波動(dòng)還是非常明顯的,這在弱網(wǎng)下就很有可能造成如下圖所示的卡頓。
視頻中左一的男士在伸手剛接到左三女士遞出的傳單之時(shí)進(jìn)入弱網(wǎng),切換分辨率,產(chǎn)生了卡頓。
新一代的壓縮標(biāo)準(zhǔn),如 VP9、AV1、VVC/H.266 等都支持在做幀間預(yù)測(cè)的時(shí)候當(dāng)前幀和其參考幀使用不同的分辨率,其基本思想是對(duì)參考幀做重采樣 (re-sampling) 以使得其和當(dāng)前幀的分辨率匹配,從而進(jìn)行幀間預(yù)測(cè),以實(shí)現(xiàn)分辨率切換的時(shí)候不用編 I 幀的目的。
阿里云 RTC codec 的變分辨率編碼 (resolution change coding, 以下簡(jiǎn)稱 RCC) 也使用和上述標(biāo)準(zhǔn)類似的基本思想,通過參考幀重采樣等手段使得之前已編碼的其他分辨率的參考幀也能為當(dāng)前幀所用,維持幀間的參考鏈不斷,充分利用幀間信息冗余提升壓縮效率,省去編碼效率低下的 I 幀。
Codec level 壓縮性能測(cè)試
本文對(duì)阿里云 RTC codec 的 RCC 特性進(jìn)行測(cè)試,使用 6 個(gè)視頻會(huì)議序列(背景不動(dòng),運(yùn)動(dòng)幅度較小),和 5 個(gè)運(yùn)動(dòng)程度較大的序列,高低兩個(gè)分辨率,一秒鐘切換一次,只評(píng)價(jià)分辨率切換幀的碼率和視頻質(zhì)量,因?yàn)閷?duì)于后續(xù)的幀,使用 RCC 與否,編碼方式并沒有變化。
對(duì)于視頻會(huì)議序列,相同視頻質(zhì)量下碼率有 70% 節(jié)省,對(duì)于運(yùn)動(dòng)序列,相同視頻質(zhì)量下碼率有 58% 的節(jié)省,因?yàn)橐曨l內(nèi)容越靜止不動(dòng),幀間編碼的比例越高,則 RCC 的優(yōu)勢(shì)越明顯,所以視頻會(huì)議序列 RCC 的增益比運(yùn)動(dòng)序列要高,是合理的。
下圖展示了一個(gè)測(cè)試序列使用 RCC 后碼率波動(dòng)的變化,藍(lán)線表示的是未加 RCC 的碼率波動(dòng),紅線表示的是加了 RCC 之后的碼率波動(dòng),可以看到使用 RCC 后分辨率切換處的編碼 I 幀碼率尖峰明顯沒有了,碼率更加平穩(wěn),而且視頻質(zhì)量 PSNR 也有所提升。
藍(lán)線中分辨率切換處的 I 幀平均碼率為 840kbps, PSNR=33.5db, 39.7db, 40.6db for Y, U, V 三個(gè)分量;而紅線中分辨率切換幀的平均碼率為 360kbps, PSNR=36.3db, 40.9db, 42.0db for Y, U, V 三個(gè)分量。
即開了 RCC 之后,分辨率切換時(shí)的 I 幀碼率降低了近 60%,同時(shí)亮度的 PSNR 提升了近 3 個(gè) db。
RTC level 效果
除了前述的單純 codec level 變分辨率不編 I 幀帶來的一幀的壓縮性能提升之外,RCC 在和 LTR (Long Term Reference) 結(jié)合后會(huì)進(jìn)一步降低弱網(wǎng)下頻繁請(qǐng)求 I 幀的可能性。
LTR 抗弱網(wǎng)的原理在上一篇分享《阿里云 RTC QoS 屏幕共享弱網(wǎng)優(yōu)化之若干編碼器相關(guān)優(yōu)化》中已有所介紹,在此結(jié)合 RCC 會(huì)進(jìn)一步提升其抗弱網(wǎng)效果,原理如下:
1. 沒有 LTR 時(shí),在弱網(wǎng)場(chǎng)景下如果丟包或卡頓無法恢復(fù),則會(huì)請(qǐng)求 I 幀;
2. 增加了 LTR 之后,則不會(huì)請(qǐng)求 I 幀,而是會(huì)請(qǐng)求 LTR 幀恢復(fù),編碼效率提升很多;
3. 如果是弱網(wǎng)下發(fā)生了分辨率切換,沒有 RCC 的情況下,由于必須編碼 IDR 幀,所以 LTR 被清空,如果此 I 幀太大,導(dǎo)致接收端收不到,則其會(huì)再次請(qǐng)求 I 幀,陷入一個(gè)惡性循環(huán)中。
4. 如果開了 RCC ,不僅分辨率切換幀本幀不會(huì)編碼 I 幀,其他的參考幀管理也和之前一樣,LTR 也不會(huì)被清空,分辨率切換幀本幀的大小比 I 幀減少了很多,接收端收不到的概率大大降低,即使收不到,也可以請(qǐng)求 LTR 恢復(fù),而不是 I 幀恢復(fù)。
本文在 RTC level 模擬弱網(wǎng)場(chǎng)景,使其一秒鐘切換一次分辨率,下面兩圖分別是未加 RCC 和 加了 RCC 之后的效果,可以看到未加 RCC 的畫面在分辨率切換時(shí)會(huì)有明顯的卡頓以及編 I 幀造成的 flicker 效應(yīng),而加了 RCC 的則會(huì)很流暢,畫面也沒有 flicker 效應(yīng)。
上圖是未加 RCC,一秒鐘切換一次分辨率的效果,有多次明顯的小卡頓,且畫面有頻繁 I 幀造成的 flicker 效應(yīng)。
上圖是加了 RCC,一秒鐘切換一次分辨率的效果,整體比較流暢,感覺不到卡頓,視頻質(zhì)量也比較平穩(wěn),沒有 flicker 效應(yīng)。
「視頻云技術(shù)」你最值得關(guān)注的音視頻技術(shù)公眾號(hào),每周推送來自阿里云一線的實(shí)踐技術(shù)文章,在這里與音視頻領(lǐng)域一流工程師交流切磋。
原文鏈接:https://developer.aliyun.com/article/783329?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的阿里云 RTC QoS 弱网对抗之变分辨率编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网泛娱乐直播安全的解决之道
- 下一篇: 阿里云加速构建技术平台,推动5G消息产业