最近和人用facetime, 因為wifi實在是差,就用了自己的data。畫面開始糊了起來,但是也還不錯。所以我就在心里盤算着我這每個月5G的流量能不能頂的住,因為現在天天基本上是用data和女朋友打whatsapp電話,一打就是十幾個小時,擱誰誰也頂不住。
而且我知道,像facetime和whatsapp,他們的視頻通話流量優化都是做的相當的好,比如說,facetime一分鍾大概3MB,whatsapp 一分鍾5MB。
而且這些盡可能做到了比較清晰的通話質量。
對比一般的mkv, mp4,至少需要10MB一分鍾。而且清晰度也就那樣。那么,壓縮算法是如何做到“省流量”的呢?
首先,壓縮算法分為有損和無損,這些事我們早就知道了的。
下面我們就對具體的幾種常用的壓縮算法來分析一下它的特點和優劣。
RLE(Run length encoding) 算法的機制
讓我們來嘗試對 AAAAAABBCDDEEEEEF 這 17 個半角字符的文件(文本文件)進行壓縮。
RLE算法會將AAAAAABBCDDEEEEEF 的17個字符成功被壓縮成了 A6B2C1D2E5F1 的12個字符。
RLE經常用於壓縮圖像文件等等,但是其缺點也很明顯,比如說如果你是ABCDABCD,那么此算法就會把他壓縮成A1B1C1D1A1B1C1D1,這樣一來沒有減小反而還增大了!
哈夫曼算法和莫爾斯編碼
哈夫曼算法是指,為各壓縮對象文件分別構造最佳的編碼體系,並以該編碼體系為基礎來進行壓縮。
那么這算法是怎么實現的呢?
比如說: AAAAAABBCDDEEEEEF 中的 A - F 這些字符,此算法會按照出現頻率高的字符用盡量少的位數編碼來表示這一原則進行整理。
而在哈夫曼算法中,通過借助哈夫曼樹的構造編碼體系,即使在不使用字符區分符號的情況下,也可以構建能夠明確進行區分的編碼體系。
這個樹是怎么構建的可以自行查閱相關網頁。