编码技术
编码技术,实质是一种针对特定音视频格式内容压缩成另一种视频格式的方式。随着技术的发展,市场上常见的视频压缩技术有RV、VC-1、MPEG2、H.263、H.264、H.265、VP8、VP9等,音频压缩技术包含MP3、RA、AMR、AAC、Vorbis、AC3、APE等。
视频编解码技术将视频内容以减小空间占用但尽力保持观看质量的方式表达,代价则是非常复杂的编码算法和较长的计算时间。
压缩
少的数据来表达更多的信息,也就是我们常说的压缩。
压缩可以分为无损压缩和有损压缩,无损压缩表示压缩过程中不丢失任何信息;有损压缩则通过删除不必要或者不重要的内容来减少数据量。
数据压缩的理论与统计学科密不可分,可以被看作找到数据的特殊差异,再针对差异进行不同处理,针对较大份数据找到最佳压缩方式不是件容易的事,不同压缩方法可视作对最优解不同的逼近,机器学习或深度学习不论在寻找差异还是预测序列的概率上都可以扮演重要角色。
视频压缩的方法
视频的压缩方法主要包括去除空间上、时间上、统计上以及感知上的冗余信息等几个主要努力方向。视频由一系列连续的图像组成,在某一幅图像之中就存有大量的冗余,例如某一个像素点与周围的许多像素点就存在相似或连续的关系,在连续的一系列图像中也存在相关性。
GOP
现代的视频编码器里存在GOP(Group of Pictures)的概念,代表了一组连续的图像帧,通常而言,GOP中的第1帧编码为I帧,此外还有P帧和B帧的概念。I帧表示关键帧(Key Frame),其解码时不需要引用来自其他帧的信息即可完成(与图片编解码较为相像);P帧表示前向参考帧(Predictive Frame),体现了当前帧与前面参考帧的区别,需要依赖前面的I帧或P帧才可以解码;B帧通常又叫作双向参考帧(Bi-directional Interpolated Prediction Frame),记录了当前帧与前后帧的不同,需要依赖其前后两个方向的I帧或P帧才可以完成解码。
SVG
SVG是一种适合应用于网页的矢量图形标准(见图3-9),不同的用户观看图片时使用的浏览器分辨率可能大不相同,且网页有可能被放大缩小以关注更多的细节,单一分辨率的图片在预定分辨率下观感良好,但放大后就显得粗糙。
针对有极致压缩优化需求的用户,还可以考虑WEBP和BPG等格式,WEBP衍生自视频编码格式VP8,由Google在BSD授权下开源,相比JPEG而言,同样质量的图片WEBP可节省25%~40%的大小。在Chrome、Opera浏览器和Android系统上,都内置了它的支持,但其他浏览器不能直接支持则是一大弊端,意味着服务端需要针对同一图像存储不同的格式。当然,当前支持WEBP的浏览器市场份额在50%以上,采用这一格式可以让很多用户得到较好的网页和图片加载时间,还是比较值得的。
P2P
P2P(Peer-to-Peer)即点对点服务,常见的互联网服务更多采用“客户端-服务器”架构,所有的内容均由单一服务器发送给客户端,而P2P技术则允许没有中心服务器,用户设备既作为客户端接收和消费内容,也作为服务端,将收到的内容服务发给其他客户端。因为大量客户设备均可提供带宽、存储和计算资源,可以大规模节约运营成本,在许多情况下也可以提升服务质量。