- WebRTC音視頻實時互動技術:原理、實戰與源碼分析
- 李超編著
- 1051字
- 2021-08-06 14:49:32
3.2.2 減少數據量
當網絡帶寬一定的情況下,為了解決實時通信的矛盾,我們必須通過減少數據量來解決這一矛盾。要知道,減少音視頻數據量一定是以犧牲音視頻服務質量為代價的,但這就是一種平衡。
通過減少數據量來保障音視頻的實時性有哪些方法呢?這里總結了5種方法,分別是采用更好的壓縮算法、SVC技術、Simulcast技術、動態碼率、甩幀或減少業務。接下來就詳細討論一下這幾種方法。
·采用更好的壓縮算法。這比較好理解,H265、AVI是最近幾年才推出的編解碼器,它的壓縮率要比現在流行的H264高得多。在一些測試中,H265比H264提高了25%的壓縮率,而AVI在veryslow模式下壓縮率比H264提高了40%左右,這是相當可觀的。但從實時性方面看,目前無論是H265還是AVI,其編碼速度都與H264有不小的差距,要達到商用級別還需要一段時間??上驳氖牵珹VI已經進入Chrome的測試版中,相信其后的發展速度會超出人們的預期。
·SVC技術,是減少傳輸數據量非常好的一種方法。其基本原理是將視頻按時間、空間及質量分成多層編碼,然后將它們裝在一路流中發給服務端。服務端收到后,再根據每個用戶的帶寬情況選擇不同的層下發。其好處是,可以讓不同網絡狀況的用戶都得到較好的服務質量。但它也有缺點:一是上行碼流不但沒減少反而增加了,所以需要上行用戶配置很好的帶寬;二是由于SVC實現復雜,又沒有硬件支持,所以終端解碼時對CPU消耗很大。
·Simulcast技術。Simulcast與SVC技術類似,不過它的實現要比SVC簡單得多(見圖3.3)。其基本原理是,將視頻編碼出多種不同分辨率的多路碼流,然后上傳給服務端。服務端收到碼流后,根據每個用戶不同的帶寬情況,選擇其中一路最合適的碼流下發給用戶。它與SVC技術相比有以下幾點不同:一是Simulcast上傳的每一路流可以單獨解碼,而SVC做不到;二是由于Simulcast的每一路都可以單獨解碼,所以它的解碼復雜度與普通解碼的是一樣的;三是由于Simulcast上傳的是多路單獨的流,所以上傳碼率要比SVC多很多。

圖3.3 SVC與Simulcast比較圖
·動態碼率,也是一種減少數據的方法。當網絡帶寬評估出用戶帶寬不夠時,會通過編譯器讓其減小輸出碼率;當評估出帶寬增大時,又會增加輸出碼率。這就是動態碼率。如果你發現在網絡抖動比較大時,某個音視頻產品的圖像一會兒清晰,一會兒模糊,那多半是因為其采用了動態碼率的策略。
·甩幀或減少業務。除了上面介紹的那些方法外,還有一種不太友好的方法,就是甩幀或關閉某些不重要的業務來減少數據量。當然,這種方法是在用戶帶寬嚴重不足的情況下才使用的,只有到了萬不得已的時候才會使用這種策略。
以上就是通過減少數據量解決音視頻與網絡之間矛盾的方法,在上面的幾種方法中,用得最多的是Simulcast和動態碼率。
- 玩轉Scratch少兒趣味編程
- Python量化投資指南:基礎、數據與實戰
- Python從入門到精通(精粹版)
- ASP.NET動態網頁設計教程(第三版)
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- C/C++常用算法手冊(第3版)
- JavaScript by Example
- CouchDB and PHP Web Development Beginner’s Guide
- Kivy Cookbook
- Mastering Concurrency in Python
- Node.js 6.x Blueprints
- micro:bit軟件指南
- SAP HANA Starter
- Testing Practitioner Handbook
- SEO的藝術(原書第2版)