最近和人用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 这些字符,此算法会按照出现频率高的字符用尽量少的位数编码来表示这一原则进行整理。
而在哈夫曼算法中,通过借助哈夫曼树的构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系。
这个树是怎么构建的可以自行查阅相关网页。