作者|安基程、田偉峰
審校| 泰一
視訊編碼中的變分辨率問題及解決
變分辨率在弱網場景的實際應用中非常常見,網絡狀況不好的時候降低分辨率可以降低碼率,減少塊效應,網絡好的時候增加分辨率可以提升清晰度及主觀體驗。
目前主流的視訊編碼标準,比如 H.264、H.265,在編碼過程中如果要進行分辨率切換,則必須要先編碼一個 I 幀,而 I 幀隻能使用幀内預測,編碼效率低下。這在弱網變分辨率的時候就容易造成卡頓。下圖中展示了每秒鐘切換分辨率的碼率波動效果,高低兩個分辨率,每秒鐘切換一次。

上圖中橫坐标表示編碼的幀數,縱坐标表示每幀的大小,圖中最高的 4 個尖峰表示從低分辨率切換到高分辨率時編的 I 幀,在這 4 個尖峰中間的較低尖峰是從高分辨率切換到低分辨率編碼的 I 幀。可見編碼 I 幀帶來的碼率波動還是非常明顯的,這在弱網下就很有可能造成如下圖所示的卡頓。
視訊中左一的男士在伸手剛接到左三女士遞出的傳單之時進入弱網,切換分辨率,産生了卡頓。
新一代的壓縮标準,如 VP9、AV1、VVC/H.266 等都支援在做幀間預測的時候目前幀和其參考幀使用不同的分辨率,其基本思想是對參考幀做重采樣 (re-sampling) 以使得其和目前幀的分辨率比對,進而進行幀間預測,以實作分辨率切換的時候不用編 I 幀的目的。
阿裡雲 RTC codec 的變分辨率編碼 (resolution change coding, 以下簡稱 RCC) 也使用和上述标準類似的基本思想,通過參考幀重采樣等手段使得之前已編碼的其他分辨率的參考幀也能為目前幀所用,維持幀間的參考鍊不斷,充分利用幀間資訊備援提升壓縮效率,省去編碼效率低下的 I 幀。
Codec level 壓縮性能測試
本文對阿裡雲 RTC codec 的 RCC 特性進行測試,使用 6 個視訊會議序列(背景不動,運動幅度較小),和 5 個運動程度較大的序列,高低兩個分辨率,一秒鐘切換一次,隻評價分辨率切換幀的碼率和視訊品質,因為對于後續的幀,使用 RCC 與否,編碼方式并沒有變化。
對于視訊會議序列,相同視訊品質下碼率有 70% 節省,對于運動序列,相同視訊品質下碼率有 58% 的節省,因為視訊内容越靜止不動,幀間編碼的比例越高,則 RCC 的優勢越明顯,是以視訊會議序列 RCC 的增益比運動序列要高,是合理的。
下圖展示了一個測試序列使用 RCC 後碼率波動的變化,藍線表示的是未加 RCC 的碼率波動,紅線表示的是加了 RCC 之後的碼率波動,可以看到使用 RCC 後分辨率切換處的編碼 I 幀碼率尖峰明顯沒有了,碼率更加平穩,而且視訊品質 PSNR 也有所提升。
藍線中分辨率切換處的 I 幀平均碼率為 840kbps, PSNR=33.5db, 39.7db, 40.6db for Y, U, V 三個分量;而紅線中分辨率切換幀的平均碼率為 360kbps, PSNR=36.3db, 40.9db, 42.0db for Y, U, V 三個分量。
即開了 RCC 之後,分辨率切換時的 I 幀碼率降低了近 60%,同時亮度的 PSNR 提升了近 3 個 db。
RTC level 效果
除了前述的單純 codec level 變分辨率不編 I 幀帶來的一幀的壓縮性能提升之外,RCC 在和 LTR (Long Term Reference) 結合後會進一步降低弱網下頻繁請求 I 幀的可能性。
LTR 抗弱網的原理在上一篇分享
《阿裡雲 RTC QoS 螢幕共享弱網優化之若幹編碼器相關優化》中已有所介紹,在此結合 RCC 會進一步提升其抗弱網效果,原理如下:
1. 沒有 LTR 時,在弱網場景下如果丢包或卡頓無法恢複,則會請求 I 幀;
2. 增加了 LTR 之後,則不會請求 I 幀,而是會請求 LTR 幀恢複,編碼效率提升很多;
3. 如果是弱網下發生了分辨率切換,沒有 RCC 的情況下,由于必須編碼 IDR 幀,是以 LTR 被清空,如果此 I 幀太大,導緻接收端收不到,則其會再次請求 I 幀,陷入一個惡性循環中。
4. 如果開了 RCC ,不僅分辨率切換幀本幀不會編碼 I 幀,其他的參考幀管理也和之前一樣,LTR 也不會被清空,分辨率切換幀本幀的大小比 I 幀減少了很多,接收端收不到的機率大大降低,即使收不到,也可以請求 LTR 恢複,而不是 I 幀恢複。
本文在 RTC level 模拟弱網場景,使其一秒鐘切換一次分辨率,下面兩圖分别是未加 RCC 和 加了 RCC 之後的效果,可以看到未加 RCC 的畫面在分辨率切換時會有明顯的卡頓以及編 I 幀造成的 flicker 效應,而加了 RCC 的則會很流暢,畫面也沒有 flicker 效應。
上圖是未加 RCC,一秒鐘切換一次分辨率的效果,有多次明顯的小卡頓,且畫面有頻繁 I 幀造成的 flicker 效應。
上圖是加了 RCC,一秒鐘切換一次分辨率的效果,整體比較流暢,感覺不到卡頓,視訊品質也比較平穩,沒有 flicker 效應。
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。