封装格式、编码格式,以及什么时候转换毫无代价
扩展名说的是盒子,不是里面的东西。.mp4、.mkv、.mov和.webm都是封装格式(容器):它们装着音视频轨道、时间戳和一些记录信息。画面究竟是什么——以及每个播放器都必须能解码的——是里面的编码格式:新文件常见的是H.264、HEVC、VP9或AV1,老文件则是DivX、Xvid、Sorenson Spark或VP6。扩展名相同的两个文件,处理起来可能完全是两回事。
这就是为什么“转成MP4”有时只要几秒,有时要一个小时。当里面的编码格式可以放进MP4时,编码好的视频会逐字节复制过去,只重建外面的盒子:一部两小时的H.264 MKV或MOV几秒就能转完,画面完全相同,因为根本没有解码。当编码格式放不进MP4,或者能放进去却几乎没有设备能播放时,视频就必须解码再重新编码——AVI里的DivX和Xvid、WEBM里的VP8和VP9、老FLV里的Sorenson Spark和VP6都是如此。那是真正的重新编码,要花时间,也会损失一点画质。每个工具都会告诉您走的是哪条路。
每次重新编码都是一次新的有损压缩,而且损失会叠加。经过三个转换器的片段就被压了三次,任何设置都找不回之前丢掉的内容。只要有得选,就一步完成整件事,而不是先转换、再压缩、再转换。
只有重新编码,剪切才能精确到帧,这是压缩视频的工作原理,而不是工具的缺陷。大多数帧只描述相对上一帧的变化,所以直接复制的剪切只能从关键帧开始——大多数文件中关键帧相隔一两秒。剪辑视频会告诉您实际采用的时间点,开启“精确剪切”会重新编码开头部分,让它正好落在您指定的位置。同样的道理也解释了为什么旋转视频处理MP4和MOV是瞬间完成的:这两种格式带有旋转标记,旋转片段只需改写几个字节,完全不碰像素。AVI、WMV和MPEG没有这种标记,所以旋转会直接写进画面,文件会以MP4格式返回。
MP4这个盒子不如MKV,文件正是在这里丢东西。MKV生来就能装许多轨道:多种语言、字幕、章节、内嵌字体和封面图。一个所有设备都能播放的MP4只装一条视频轨和一条音频轨。所以转换后的文件保留主画面和主声音,其余的留在原处,而且会告诉您丢掉了什么,不让您事后才发现。杜比数字(Dolby Digital)和DTS音频是另一类常见的损失:这里会把它们转换为AAC,因为不这样做,文件在电视上播放就会没有声音。