红红火火的互联网视频直播催生了更多人对视频流技术的探究。作为一名程序员,如果想要保持竞争力,就应该对火热的视频应用技术有所理解。 视频流技术其实不是什么新技术,只是因为互联网视频直播、点播的应用普及而备受关注,而逐渐成为每一个程序员必须掌握的基础知识。 一个视频流媒体的生命周期大致分为三个阶段,主播推流、协议传输、观众听众拉流观看。大致过程是,直播设备采集编码形成数据流,然后通过相应的传输协议将数据流传输到拉流的观众端,观众端通过解码进行观看。 三个阶段都需要一定的格式和标准,都需要遵从一定的协议。其中最为初始的阶段是视频流编码压缩,形成一定格式的数据文件,然后推流到观众端进行解码观看。每一个阶段都以文件为载体。我们今天分析一下视频流的文件格式标准,以打开该技术缺口,探究整个技术栈。视频流文件格式标准概述 一个视频流的形成是以文件为逻辑载体的,所以我们可以从文件的角度切入理解整个视频流文件格式和标准。 流媒体文件格式在流媒体系统中占有非常重要地位,设计选择合理的文件格式有利于提高流媒体服务的工作效率。从不同的角度理解,一个流媒体数据文件有三种格式:文件格式、封装格式、编码格式。文件格式是文件的形式,封装格式是存储的格式,编码格式是压缩和解压缩的格式。这实际上是一个问题的三个层面。 视频流媒体文件是立体的抽象的,为了便于理解,我们从几个角度加以讨论。讨论的顺序没有按照一个视频文件的生命周期过程加以分析。视频文件格式 视频文件的形式格式 视频流媒体文件格式是相对于操作系统而言的,为了便于理解整个计算机的软件系统,我们在操作系统中引进了文件系统的概念。我们知道Windows操作系统中的文件名都有后缀,例如doc,pdf,exe等。视频文件在Windows中可以是mpeg,avi等。这些就是我们所理解的视频文件的格式。实际上,从这种意义上讲,视频文件的格式是静态的,可见的,形式上的文件格式。视频文件的封装格式 形式上的理解不能窥到文件的全貌,在机器上不同格式的视频文件有不同的存储方式,这就是视频文件的封装。视频文件的封装本质上把视频文件看做是一个容器,它是把编码生成的多媒体,包括视频、音频、文字、摘要信息等封装在一起存起来的容器。这个容器让多媒体的内容存储变得更加容易。 视频文件封装格式以及视频文件格式的对照 下面我们分析一下常见的视频文件封装格式。 AVI(Audio Video Interleaved)格式。在操作系统中后缀为.AVI,即音频视频交错格式。它于1992年被微软公司推出。AVI视频格式的优点是图像质量好。缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一,高低版本的解码器互相不兼容。QuickTime File Format格式,后缀为.MOV,苹果公司开发的一种视频格式。具有较高的压缩比率,缺点是有的软件不支持其播放和导入。DV-AVI格式,全称是Digital Video Format,后缀为.AVI,是由索尼、松下、JVC等厂商联合提出的一种数字视频格式。其支持IEEE 1394互相传输数据。WMV格式,全称为Windows Media Video,后缀为WMV ,它也是微软推出的一种采用独立编码方式。优点包括丰富的流间关系以及扩展性等。缺点是需要安装Windows Media Player,现在已经几乎没有网站采用了。Real Video,全称Real Networks,后缀为.RM .RMVB,随着时代的发展,这种格式也将逐渐被取代。Flash Video格式,后缀为.FLV,由Adobe Flash延伸出来的一种流行网络视频封装格式。Matroska格式,后缀为.MKV,是一种新的多媒体封装格式,它也是一种开放源代码的多媒体封装格式。甚至比MPEG的方便、强大。最为熟悉的是MPEG吧。MPEG(Moving Picture Experts Group),动态图像专家组,是ISO(国际标准化组织)与IEC(国际电工委员会)于1988年成立的制定运动图像和语音标准组织。 MPEG格式目前有3个标准,分别是MPEG-1、MPEG-2、和MPEG-4。目前,MPEG-1、MPEG-2目前已经较少使用。MPEG-3编码原本为高分辨率电视(HDTV)设计,后发现MPEG-2足够HDTV使用,所以MPEG-3未研发成功便夭折。 MPEG-4,1998年制定,MPEG-4以求用最少的数据得到最好的图像质量。它能够保存接近DVD质量的小体积视频文件。MPEG-4第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要使用在网络流媒体,语音通话,光碟,电视广播等。视频的文件的编码和解码格式 上面视频文件的格式是它们的存储格式,从动态上讲,视频的文件的采集和播放,需要视频文件的压缩和解压缩算法,与这种压缩和解压缩相匹配的是压缩和解压缩格式。 常见的编码方式有ITU(国际电传视讯联盟)主导的ITU-T的H.26X标准。 ITU-T的H.26X系列标准 H.26X系列 由国际电传视讯联盟ITU主导,包括H.261、H.262、H.263、H.264、H.265。H.261:在老的视频会议和视频电话产品中应用。H.262:包括陆地,海底电缆和直接卫星广播。H.263:用在视频会议、视频电话和网络视频上。H.264:H.264等于MPEG-4第10部分,或称AVC。H.265:高效率视频编码(High Efficiency Video Coding),简称HEVC,是H.264/MPEG-4 AVC的继任者。HEVC不仅提升图像质量,也能达到H.264两倍之压缩率,可支持4K分辨率甚至到超高画质电视,最高支持8K分辨率。MPEG系列是视频文件格式和标准的家族,其既规定了视频的存储格式,也规定了视频的编码和解码格式。MPEG-2第2部分等同于H.262。MPEG-4第10部分等于ITU-T H.264,两个编码组织合作,诞生了H.264/AVC标准。H.265独立成体系,与MPEG没有对应的标准,所以我们看到HEVC或者H.265就知道这个标准是独立于MPEG的。 当然,还有RTVideo 、SheerVideo 、Smacker等压缩和解压缩的标准,在这里不一一阐述。 视频文件格式和标准是一个复杂的体系 视频文件格式包含视频的采集格式、视频的存储格式,视频的表征格式,视频的解码格式等,各种格式标准构成一个蔚为壮观的家族。这些标准是采用选择软件采集、存储、解析的关键,即使同一和后缀文件,也有可能是不同标准参数准封装的。同一个文件也可能有不同的编码解码方式转化完成的。区别选择视频文件格式,要系统看待视频文件的格式标准。要认识其本质,需要从操作系统,从数据结构和算法的角度去看待,需要从数据的输入、输出、存储的本质去解读,这样才能更好地选择视频文件的格式和标准。