| 11 min read

感谢 “珠思码记” 授权转载,微信搜索 “珠思码记” 关注公众号。

自从接手优酷的web播放器之后,点了快一年的播片儿技能点,感觉技术面变得越来越偏门,至少在前端界播片儿(音视频)技术一直水花甚少,真是一入片儿技深似海,从此前端是路人。

想在被世人遗忘之前 出书立传,又恐无人问津。

哈哈扯远了,既然一只脚伸到音视频技术这个泥潭里搅和了一圈之后,总要写点什么。这篇主要是来闲聊,从大家打小看过的片儿里扯一扯音视频格式的前世今生。

主要是讲故事,感兴趣的话可以一看。不感兴趣的话,可以直接点赞打赏红包转账了[手动狗头]。

想必很多人的硬盘里都会有这些奇奇怪怪的文件吧。文件名啥的可能各有不同,但扩展名大家一定耳熟能详:.avi .rmvb .mkv .3gp bla bla~。

而且随着时间的推移,当你在网上down片儿的时候,发现有些已经不常见了,新的又冒了出来。那这些都是什么玩意儿呢?

那我要先解释一个概念 敲黑板

0x01 封装格式/编码格式

可以看出,上面像mkv avi什么的都是视频的封装格式,或者说容器格式。如果把视频的内容比作酒的话,那所谓封装格式其实就是这个酒瓶。有酒瓶才好运输(网络传输下载)和保存(文件形式放在硬盘上)酒。

那么,播放视频的过程其实就是打开酒瓶喝酒的过程。

而酒也就是音视频的内容 其实也是需要经过浓缩和蒸馏才能得到高酒精度的白酒的(要不然就是米酒 想喝醉肯定要撑死)。这个过程其实就是压缩编码,因为音视频的原始信息实在太大了。

一个1080p 30fps时长为2小时的电影,如果未经压缩 需要 1920 x 1080 x 24bit x 30 x7200 ≈ 1251GB的空间

压缩编码就是为了压缩冗余信息,当然这个算法理论也是很有意思的东西 不过本篇文章就先不过多解释,后续可以单独拎一篇出来。今天主要掰扯一下编码/封装格式的前世今生以及沧海桑田。

0x02 音视频格式大事记

视频格式离不开标准的制定,但是制定标准的组织有很多,且不好记,所以我干脆都给他们起个外号。

首先图中的这三个是行业标准的制定者。

联盟:英文名是ITU-T 国际电信联盟电信标准分局。联合国通讯标准制定的老大哥,音视频的标准关乎多媒体通讯传输,所以也算是国际电联分内之事。

M社:大家可能有所耳闻,就是大名鼎鼎的MPEG。 全称“动态图像专家组”隶属于国际化标准组织和国际电工委员会(ISO/IEC)。

后来他们俩强强联合,又组成了一个联合专家组(JVT)。姑且叫「M社联盟」吧。当今世界主流的编码格式都是出自这个联合专家组了。

从1988年开始「联盟」提出了第一个正式的视频编码标准H261 后续的很多编码格式都是基于这个的一些思路。比如预测编码熵编码变换量化运动补偿。后续又陆续出了H263和H263的++威力加强版。

而「M社」则出了MPEG-1。这个其实就是当时VCD的使用的编码标准。值得一提的是,我们耳熟能详的mp3其实就是MPEG-1里的AudioLayer-3 所以简称mp3(并不是mpeg3哦),不过随着时代发展mp3也逐渐淘汰了,压缩率更高的AAC登上历史舞台,不过大家现在都是听在线音乐,具体的格式其实已经不太care了。

后来 M社跟联盟强强联手后,推出了 MPEG-2。这个就是DVD的编码标准。后来当今应用最广泛的H264和H265 都是出自这个牛逼加牛逼的组合。

下面值得一提的就是我们这个今天最主流MPEG-4。首先MPEG-4并不等于mp4。MPEG-4是一系列的开放标准,里面制定了很多的规范,比如

part-10就是H264的标准
part-12 就规定了基础的mp4的封装格式。
part-14 基于part-12 才真正定义了我们所说的mp4文件格式(封装格式)
所以我们说MPEG-4的时候它代表了一系列具体的编码格式。

这些业内标准的编码格式视频基本上也都使用比较通用和标准化的封装格式。如下图所示

.vob(video object)格式就是之前dvd所用的。

.mp4 大家就很熟悉了,最初他还有个简化版本叫3gp,用于手机上使用,由于现在智能机配置越来越好,所以已经淘汰了。

.mkv 俗称万能视频(封装)格式,是目前最好用的最开放的一种封装格式,支持各种编码格式以及外挂字幕。所以你现在下载电影什么的 大部分都是这个格式了。

.ts 这个大家可能不够熟悉 目前主流的直播视频基本上就是基于ts和flash(.flv)这两种格式。不过flash目前也基本上穷途末路了~

那讲完了这些业内官方的大佬们,让我们也看一看民间的故事。

首先不得不提的就是这个「狗血双雄」(DivX/Xvid)。为啥叫这个外号,因为他们的故事确实很狗血。

前面提到的那些编码格式标准,其实只是规范。具体的编解码器还是需要具体的开发实现。那当年mp4标准出了之后市面上主流的编码器全是微软的。但微软的嘴脸大家是知道的。他把编解码器跟他自家的windows media player绑定而且后来只支持asf格式,而不支持avi格式了。

所以以一批黑客为首的开源世界卫士们就非常不忿了,直接破解了一版支持生成avi的 mp4解码器叫DivX,竖起了开源的大旗。

一时间业内的盗版视频几乎全是用这个压的。如果当时大家有mp4播放器啥的需要转换格式,可能听说过这个名字。

但是由于是破解的微软始终上不了台面,于是他们就注册了个公司。基于之前的技术,做了一个开源的DivX,也借助开源社区不断发展壮大。但是就看起来一切顺利的时候好戏上演了。这个DivX的公司突然宣布商业化。闭源,收费,开源社会就这么被狠狠的涮了一回。

开源界的一众大神们当然咽不下这口气,后来开源项目组剩下的人聚集一些专家,基于最后一个开源的版本,发展出了Xvid。名字很有意思,是DivX完全倒过来的。而且经过一年发展一股脑的超越了DivX成为当时世界上最快的mp4编码器。

开源的力量果然强大,怪不得微软这两年也越来越开放。不过时至今日这两个编解码器也逐渐淡出人们的视线。压片组什么的也都是使用H264、H265进行编码了。

好的,上面也提到了当年大家最熟悉的格式之一AVI。

英文全称为Audio Video Interleaved,即音频视频交错格式。是微软92年推出的一种封装格式,其实是一个非常古老的格式,也不支持流媒体传输,今天市面上也已经很少见到这种格式了。前面的狗血故事也提到,微软后期就大力发展自己的wmv编码。这种视频大家应该也见过就是.wmv或者.asf的文件

(AdvancedStreamingFormat 高级串流格式)。

但由于是收费的,所以盗版界用的最多的还是avi。当年avi给大家的感觉是体积大清晰。但其实前面也讲到了avi只是酒瓶,体积大清晰其实酒(编码格式)的属性,不过avi持续了很多年,因此它内部的酒其实也不断的在变。正是这种原因,所以avi给大家的感觉是 有时候在不同平台下播不了兼容性不好。

再来看看这个「真实有限公司」其实就是当年大家所熟知的“real player” 。当年谁家的电脑里或者mp4播放器里没有一两个rmvb文件呢(RealMedia Variable Bitrate 可变比特率的real媒体视频)。real 也是当年流媒体播放界的一霸,不用下载到本地就可以变下边播。但是由于他们太过于刚愎自用不思进取。慢慢的就被新技术取代。一堆开源的标准 效果又好又不收费。谁还会再用你rmvb呢。所以,无论rmvb当年姓过苍井,还是姓过松岛,它都已经不再属于这个时代。

最后谷歌这个就不多说了 新生代的生力军 虽然自主研发的vp8/vp9 可以跟主流的H264/H265媲美,但是在推广和覆盖的道路上还有很多路要走。不过至少相对于265高昂的专利费,免费的VP9他不香么?

结尾矫情的感慨一下。回顾这短短数十年的技术变迁,真的是无数的面孔翻滚浮沉。在技术变革的道路上似乎谁也没办法阻挡滚滚的车轮,希望你我能牢牢抓住,不被时代甩下。

End

You Can Speak "Hi" to Me in Those Ways