前幾天在看AV1代碼的時候,偶然在代碼中看到了一個Switch Frame的概念,也稱為S-Frame,因為之前我只看過HEVC,從來沒有見過此概念,所以特地查了下,感覺跟H.264的extended profile中的SI/SP技術比較類似,下面簡單記錄下AV1中的S-Frame的相關資訊,
首先,一類新技術,肯定是伴隨著一類待解決的問題的出現而出現,當今雖然已經4G技術已經普及,5G技術也在如火如荼地進展中,但是由于地域的不同,由于設備的不同,并不是每個人的網路都可以無壓力地傳輸高解析度的視頻,也并不是每一臺設備需要高解析度的視頻,所以如果按照下圖所示,針對于所有的設備和網路都傳輸同樣的解析度檔案的話,那不免會對網路資源造成浪費,

同樣,當我們回想起大學宿舍時代,當我們看視頻的時候,一旦有人打開迅雷開始下載,那正在看的視頻就會出現卡頓,buffering的小花一直沒完沒了地轉,這種情況下,如果視頻依然按照原先的解析度進行傳送的話,亦會對用戶體驗造成不好的影像,
ABS: Adaptive Bitrate Streaming
在實際的流媒體傳送中,ABS技術使得我們在觀看視頻的同時,可以實時地根據我們的網路狀況和CPU的能力(capability)相應地調整流的質量,

所以這樣的話,我們在源端就得編碼出多個bitrate的流,然后客戶端根據自己的資源來適時切換到不同的流上面去,這里不同resolution的流稱為不同的rendition,

所以在此,問題就被引出來了,當我們網路情況發生變換時,我們應該在流的什么地方進行切換呢?
我們知道,在其他的編碼標準中,我們都是從隨機接入點(RAP)切入開始解碼,RAP是I幀,在VPx中,幀內幀包含KEY幀或者Intra幀,相比起Inter幀,其資料量的大小不是同樣一個數量級的,所以正確且恰當地在流中插入Key/Intra幀在ABR中非常重要,
S frame 的出現
首先我們看這么一個例子,我們在解碼的時候,先找到RAP幀,此時,如果該幀為IDR幀,則該幀前面的幀均無法作為參考,那么可想而知該幀所包含的資料量巨大,所以說我們如果想把碼率降下來,那么就要縮減IDR幀的數量,然后如果縮減了IDR幀的數量的后果就是隨機接入的等待實際要變長,這樣會降低實時流的用戶體驗,
為了解決上面的問題,提出了S frame的概念,S frame是用來取代傳統I幀或IDR幀的存在(不是完全替代),它作為一個新的隨機接入點,解碼器可以從它開始解碼,它具備IDR幀的優點,但是它會大大減少該隨機接入點所需要的資料量,下面參考一句維基百科中的解釋:
Switch frames (S-frame) are a new inter-frame type that can be predicted using already decoded reference frames from a higher-resolution version of the same video to allow switching to a lower resolution without the need for a full keyframe at the beginning of a video segment in the adaptive bitrate streaming use case.
從這段說明可以看出來,S frame 它是由高碼率的流獲取predictor,然后作為新的一路rendition的起點,如下圖,當沒有S幀的情況下,當想切換到其他碼率的碼流的時候,我們需要解新一路碼流的IDR幀,

但是,當插入了S幀以后,我們就將流分為了更小的一個個segment,這樣就方便根據網路情況隨時在流中進行切換,

S幀帶來的優點
- 切換到另外的碼流更快,質量更好
- 低延時
- 有更好的容錯
但是隨著滿足更低的延時帶來的的更多插入的S幀,會使得壓縮率減少,
過段時間整理下S Frame在AV1中的實作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241935.html
標籤:其他
