SVC/ROI技術(shù)提升數(shù)字?jǐn)z影機(jī)設(shè)計
可延展視頻編碼(或稱為可調(diào)性視頻編碼,SVC)早已是老生常談的話題,目前在市場上也能夠看到具有wavelet-base SVC(小波編碼為基礎(chǔ)的可延展視頻編碼)這一功能的實際芯片。不過,市場上對這種技術(shù)還并不太熟悉,因此,本文將向大家介紹數(shù)字網(wǎng)絡(luò)攝影機(jī)用ASC8851(M2)芯片的一些新功能和與之相關(guān)的SVC-T及ROI技術(shù)。
SVC的優(yōu)勢
為何可延展視頻編碼會受到學(xué)術(shù)界與研究單位的重視?目前在應(yīng)用上H.264格式已幾乎占據(jù)主導(dǎo)地位,但目前無論是DVR、NVR、IPC、DVS,還是視頻會議系統(tǒng),都需要具有子碼流或是多碼流的編譯碼能力。同樣的內(nèi)容分別被編成不同的分辨率,不同的比特率(或碼流),以及不同的幀率。這對編/譯碼器而言涵蓋了多種子碼流,它們都是比較大的負(fù)擔(dān),不僅如此,在實際使用上,網(wǎng)絡(luò)帶寬、存儲容量和負(fù)載也都是額外的成本考慮。仔細(xì)斟酌,對于同樣的內(nèi)容,為何我們不能只編一次就包含所有信息,按需獲取資源,其他不重要的部分直接把封包丟掉就好?如果我們能夠把影像資料有系統(tǒng)地排列,把重要部分和較不重要的部分在壓縮時用頭文件標(biāo)示清楚,那么就太完美了!所有的影像一次壓縮到最高的分辨率并采用最高的比特率和最多的幀率,然后就能完成一切。在譯碼取用的時候或是往外部串流的時候,篩選封包依照所需的分辨率。在允許的帶寬范圍內(nèi)提供最合適的幀率做串流或譯碼即可。這就是可延展視頻編碼的目標(biāo)和功效。
什么是SVC-T
延展性視頻編碼在時間軸上的應(yīng)用就是SVC-T,也就是前面說到的對不同幀率上的應(yīng)用。舉例而言,1080p@30fps的數(shù)據(jù)流無需重新編碼,而只需舍棄掉某些幀的數(shù)據(jù),就可以譯碼成1080p@15fps,甚至是1080p@7.5fps的資料。同理,1080p@25fps到1080p@12.5fps,再到1080p@6.25fps,以此類推均可。
SVC-T的原理
羅列了這些好處之后,就不得不介紹應(yīng)該如何實現(xiàn),圖1所示示意圖可方便大家了解。
以一個簡單的GOP(圖像組)為例,I-P-P-P-I-P-P-P-I分別代表I幀和P幀在GOP內(nèi)的排列順序,時間軸上從T0到T8代表幀-幀間編碼順序。圖1所示箭頭代表P幀所用的參考I幀關(guān)系,而不同的0~2層則代表不同幀率所需取用的編碼資料。
在最開始的T0時刻先以I幀編碼,下一幀T1的P幀編碼以T0為參考幀,T2也以T0為參考幀做P幀編碼,T3以T2為參考幀做P幀編碼,T4又以I幀編碼,依照之前的順序重新做一輪新的GOP編碼。
在串流或是譯碼的時候,若是把所有的0~2層(包含T0~T8)I-P-P-P-I-P-P-P-I幀資料都拿來使用,就是25fps(或30fps);若把第2層的資料舍棄不用,則剩下0~1層的T0、T2、T4和T8就是一半的幀率12.5fps(或是15fps),如果只用第0層的T0、T4和T8,那么,幀率就將再減一半,即6.25fps(或7.5fps)。
SVC-T的其它注意事項
SVC-T可支持所有幀率減半和再減半及以此類推的碼流。但是當(dāng)幀率減半時,碼流卻并未減半(可能只有變成原本的3/4)。可以理解,因為I幀壓縮得較少,而P幀卻壓縮得較多。較高層所用均是P幀,而此時碼流相對較低。在SEI(補(bǔ)充增強(qiáng)信息)的語法里,可以記錄不同幀率下所需要的比特率,這樣,就可以視帶寬、譯碼能力與網(wǎng)絡(luò)狀況去決定需要用多少幀率(對應(yīng)于多少層)的壓縮數(shù)據(jù)做串流或是譯碼。
SVC-T比分辨率與比特率上的可延展性視頻編碼更容易實現(xiàn),可以在現(xiàn)有的基礎(chǔ)上增加NAL層語法而做特別標(biāo)示,批注是0層、1層或是2層的資料,而這種特別批注會被舊有譯碼語言所忽略。因此,SVC-T所做的改動最小,影響的層面也最小。這將發(fā)揮可延展性視訊編碼在節(jié)能(降低多余的編譯碼)和降低比特率(舍棄幀率)等方面的優(yōu)勢。雖然降低幀率可能會犧牲影像的流暢性,但如果能保證其在視覺可接受的范圍內(nèi),便將是在目前可延展性視頻編碼中最可行的方案。
目前的VLC免費(fèi)軟件支持SVC-T譯碼,可以用圖2所示方式并加上svc-tlayer=#(#為層號)來開啟串流(rtsp://172.17.208.9/live1.sdp?svc-tlayer=2)。
什么是ROI
ROI(感興趣的區(qū)域)簡單來說就是在視頻編碼時把感興趣的區(qū)域編得更細(xì)膩些,讓此區(qū)域的畫面能夠比其它區(qū)域顯示得更清楚。通常我們把整張畫面的主體放在ROI區(qū)域內(nèi),在相同的帶寬條件下更加突顯主體,將大部分的碼流花在壓縮主體的重要畫面上,而將小部分的碼流花在背景的影像壓縮上。
評論