我们知道所有计算机内的文件都是以二进制方式存储的,包括媒体文件,如果不经过任何压缩,媒体,尤其是视频文件的容量通常会很大,分辨率越高则越明显,一部4K电影在未经压缩的情况下容量远远超过100GB。
大容量媒体文件非常消耗存储资源,对其进行压缩是很有必要的,通用压缩格式(如zip)未对媒体类文件进行针对性优化,且无损压缩方案压缩比太低,于是专用的媒体压缩标准应运而生,这种专用压缩方案被称为编码,相对应的,实时解压缩并播放就是解码了。
从早期的MPEG-1/2到最新的H.266,每一代编码标准在压缩效率上都有明显提升,目前最主流的H.264压缩一部1080P电影后的容量通常在10GB左右,而最新的H.266可以在同画质下将容量压缩到原来的1/3!尽管所有这些编码标准都是有损的,即在编码过程中会丢失原始画面的部分信息,但用户实际在观看视频时,损失的细节其实很难察觉,换来的却是大幅度的码率(音视频每秒的数据容量或传输量)下降。
无损和有损格式的对比,几乎看不出区别。
当然这并不是没有额外的代价的,通常越新的编码标准算法也越复杂,这意味着在解码时需要消耗更多的计算性能。
解码在运算设备(比如电脑、手机、平板等)内分为两种途径:软件解码和硬件解码,简称软解和硬解。所谓软解,就是通过执行相应的解码代码文件(通常以动态链接库形式提供)来解码影音文件;硬解就是将解码的代码直接写入芯片(通常是GPU)内部成为硬件电路的一部分,在执行解码时直接调用这部分电路来进行解码。
明白了这一点,就很容易理解两者的区别了:
软解因为是以代码文件形式存在,因此可以很方便地随时更新以支持最新的编码格式。
硬解则由于在芯片内部设计了专用解码电路,所以支持的编码格式在芯片设计完成后就确定了,无法更改。但是由于绕过了漫长的代码读取,解释,转换执行等过程,其解码效率远高于软解(通常效率差异在10倍以上)。
这导致的一种常见现象就是,很多高性能电脑在某些编码格式上的解码性能反而不如性能差得多的机顶盒或手机,其原因正在于当视频播放器软件播放某个影音文件时,前者的硬件电路恰好不支持该文件的编码格式从而只能采取软解方案而后者则集成了适配的解码电路。
通常,由于手机和机顶盒这类迷你设备更强调多媒体性能,因此尽管其芯片在绝对性能上远不如PC,但往往在解码能力上领先于后者。
例如NVIDIA的桌面GPU产品GTX 970,其硬件电路不支持H.265编码格式,因此在解码该格式的影音文件时,只能通过软解方式进行(主要消耗CPU资源)。尽管970本身性能很强,但也帮不上什么忙。而同时代的移动芯片则基本都已经支持H.265编码格式。
所以在购买主要用于音视频播放的多媒体设备时,尤其需要关注其解码支持标准,这往往比性能更重要。