SVC 分級編碼初探
1、簡介
分級編碼是一種用來相容不同的終端裝置和鏈路頻寬的技術。它的特點是對碼流分層,低層碼流可以單獨解碼,高層碼流能增強視訊的質量。
H.264 SVC (Scalable Video Coding)是以H.264為基礎,在語法和工具集上進行了擴充套件,支援具有分級特性的碼流。H.264SVC是H.264標準的附錄G,在2007年10月成為正式標準。
2、H.264 SVC 支援三種分級方法:
(1)時域分級:將幀分為不同的等級,上層的幀只能參考同層或低層的幀。
上圖例子示例包含4個巢狀的時域層:T0(基本層),T1,T2和T3。當播放幀率為3.75fps時,只需解碼T0層的幀,丟棄所有其他幀;當播放幀率為7.5fps時,解碼組成T0和T1層的幀,丟棄T2和T3層的幀;以此類推,解碼T0,T1和T2層的幀,碼流的播放幀率達到15fps;解碼所有幀將恢復30fps的全幀率。
(2)空間分級:低層的幀解析度比較低,高層的幀解析度高,可以參考低層幀和同層幀。如下圖。
(3)質量分級:低層的幀量化步長比較長,高層的幀採用更小量化步長,對低層幀的錯誤進行糾正。
以上三種方法可以組合使用。
3、SVC 的優缺點:
優點:
l 根據網路情況,裝置能力,解碼器可以選擇解碼不同層級的碼流。
l 一次編碼,多次解碼。無需重複編碼或者轉碼。
l 抗差錯。只需要底層碼流就可以解碼,高層碼流錯誤/丟失不影響視訊流暢性。可以對低層碼流和高層碼流採用不同強度的抗丟包/抗差錯手段。算上前向糾錯的開銷,SVC整體碼流可能更低。
l 底層碼流相容h264非SVC解碼器。
缺點:
l 對於質量分級和空域分級,同等質量需要大概多10%位元速率。時域分級的位元速率有所提高(實際上相當於I,P,B幀的擴充),但是對運動強度比較大的場景,位元速率有所增加。
l 對於質量分級和空域分級,運算量變大。
l 軟硬體編碼器比較少。
4、傳輸
RTP協議支援。見RFC6190。
5、業界應用
SVC在視訊會議領域用的公司比較多,比如Vidyo, Polycom,Cisco等。在直播領域的應用還面臨解碼器相容性的挑戰。
由於應用比較少,相應在市場標準化上難以統一,各家的產品互通性還存在問題[4]。
6、編解碼軟體
編碼器:Openh264: https://www.openh264.org/
思科的開源h264編碼器。
商業解碼器: 視駿:http://www.strongene.com/cn/svc/decoder/keyFeatures.jsp
開源解碼器:Open SVC Decoder: https://sourceforge.net/projects/opensvcdecoder/
法國一個大學做的專案。
標準參考程式碼(編解碼):
關注功能而不是效能。
開源流伺服器:
https://sourceforge.net/p/svcstreaming/wiki/Home/
Reference:
百科:
【1】 https://baike.baidu.com/item/H.264%20SVC
【2】https://en.wikipedia.org/wiki/Scalable_Video_Coding
部落格:
【3】https://zhuanlan.zhihu.com/p/34321415
【4】https://zhuanlan.zhihu.com/p/30984326
【5】https://xjsxjtu.github.io/2017-06-24/H264-SVC/
【6】https://multimediacommunication.blogspot.com/2009/06/open-source-scalable-video-coding-svc.html
FROM: https://blog.csdn.net/soulmate_scut/article/details/80938932
相關文章
- 程式碼修改分級
- k8s-svcK8S
- 富文字編輯器初探
- vue初探--編寫表格元件Vue元件
- 編譯原理與javacc初探編譯原理Java
- 分享《文字分類初探PPT》文字分類
- 初探webpack之編寫loaderWeb
- 線上富文字編輯器初探
- 機器學習--分類變數編碼方法機器學習變數
- Redux原始碼初探Redux原始碼
- RxJava原始碼初探RxJava原始碼
- Quill編輯器實現原理初探UI
- 初探JsonCpp - 編譯與基本使用JSON編譯
- 超級有用的CSS編碼工具集CSS
- Python 分發工具初探之 setuptoolsPython
- HTTP協議的chunked編碼(chunked transfer encoding分塊傳輸編碼)HTTP協議Encoding
- [svc]linux檔案許可權Linux
- 6.使用Calico打通Svc網路
- 編碼最佳實踐——介面分離原則
- 五分鐘戰勝 Python 字元編碼Python字元
- 快速瞭解 變分自編碼器 VAE
- CSS3星級評分效果程式碼CSSS3
- Python中的結巴分詞初探Python分詞
- 初探驗證碼識別
- Locust 任務指令碼初探指令碼
- iOS 初探程式碼混淆(OC)iOS
- 技術分享| 影片傳輸Simulcast與SvcAST
- hacmp boot ip\svc ip \standby ip\ rac ipACMboot
- Linux之rsync同步分發指令碼編寫.Linux指令碼
- 五款頂級Python程式碼編輯器!Python
- 如何使用 Laravel Collections 類編寫神級程式碼Laravel
- 初探 Go 的編譯命令執行過程Go編譯
- jquery星級評分程式碼例項詳解jQuery
- Python 分發工具初探之 setuptools 進階Python
- 從零開始學機器學習——初探分類器機器學習
- Vue 2升級 Vue 3初探小細節Vue
- AndroidSqlite資料庫版本升級管理初探AndroidSQLite資料庫
- .NET初探原始碼生成(Source Generators)原始碼