常见视频编码格式与RGBYUV视频存储格式.docx
- 文档编号:11404021
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:30
- 大小:170.02KB
常见视频编码格式与RGBYUV视频存储格式.docx
《常见视频编码格式与RGBYUV视频存储格式.docx》由会员分享,可在线阅读,更多相关《常见视频编码格式与RGBYUV视频存储格式.docx(30页珍藏版)》请在冰点文库上搜索。
常见视频编码格式与RGBYUV视频存储格式
TCC8900VPU分析
---星恒教育--何伟整理
——常见视频编解码格式及RGB和YUV存储格式预研
一、常见视频编解码格式
1视频文件类别
常言道:
物以类聚,人以群分。
视频文件也不例外,细细算起来,视频文件可以分成两大类:
其一是影像文件,比如说常见的VCD便是一例。
其二是流式视频文件,这是随着国际互联网的发展而诞生的后起视频之秀,比如说在线实况转播,就是构架在流式视频技术之上的。
1.1影像格式
日常生活中接触较多的VCD、多媒体CD光盘中的动画……这些都是影像文件。
影像文件不仅包含了大量图像信息,同时还容纳大量音频信息。
所以,影像文件的“身材”往往不可小觑。
1)AVI格式
2)MOV格式
3)MPEG/MPG/DAT格式
1.2流式视频格式
目前,很多视频数据要求通过Internet来进行实时传输,前面我们曾提及到,视频文件的体积往往比较大,而现有的网络带宽却往往比较“狭窄”,千军万马要过独木桥,其结果当然可想而知。
客观因素限制了视频数据的实时传输和实时播放,于是一种新型的流式视频(StreamingVideo)格式应运而生了。
这种流式视频采用一种“边传边播”的方法,即先从服务器上下载一部分视频文件,形成视频流缓冲区后实时播放,同时继续下载,为接下来的播放做好准备。
这种“边传边播”的方法避免了用户必须等待整个文件从Internet上全部下载完毕才能观看的缺点。
到目前为止,Internet上使用较多的流式视频格式主要是以下三种:
1)RM(RealMedia)格式
RM格式是RealNetworks公司开发的一种新型流式视频文件格式,它麾下共有三员大将:
RealAudio、RealVideo和RealFlash。
RealAudio用来传输接近CD音质的音频数据,RealVideo用来传输连续视频数据,而RealFlash则是RealNetworks公司与Macromedia公司新近合作推出的一种高压缩比的动画格式。
RealMedia可以根据网络数据传输速率的不同制定了不同的压缩比率,从而实现在低速率的广域网上进行影像数据的实时传送和实时播放。
这里我们主要介绍RealVideo,它除了可以以普通的视频文件形式播放之外,还可以与RealServer服务器相配合,首先由RealEncoder负责将已有的视频文件实时转换成RealMedia格式,RealServer则负责广播RealMedia视频文件。
在数据传输过程中可以边下载边由RealPlayer播放视频影像,而不必像大多数视频文件那样,必须先下载然后才能播放。
目前,Internet上已有不少网站利用RealVideo技术进行重大事件的实况转播。
2)MOV文件格式(QuickTime)
MOV也可以作为一种流文件格式。
QuickTime能够通过Internet提供实时的数字化信息流、工作流与文件回放功能,为了适应这一网络多媒体应用,QuickTime为多种流行的浏览器软件提供了相应的QuickTimeViewer插件(Plug-in),能够在浏览器中实现多媒体数据的实时回放。
该插件的“快速启动(FastStart)”功能,可以令用户几乎能在发出请求的同时便收看到第一帧视频画面,而且,该插件可以在视频数据下载的同时就开始播放视频图像,用户不需要等到全部下载完毕就能进行欣赏。
此外,QuickTime还提供了自动速率选择功能,当用户通过调用插件来播放QuickTime多媒体文件时,能够自己选择不同的连接速率下载并播放影像,当然,不同的速率对应着不同的图像质量。
此外,QuickTime还采用了一种称为QuickTimeVR的虚拟现实(VR,VirtualReality)技术,用户只需通过鼠标或键盘,就可以观察某一地点周围360度的景象,或者从空间任何角度观察某一物体。
3)ASF(AdvancedStreamingFormat)格式
Microsoft公司推出的AdvancedStreamingFormat(ASF,高级流格式),也是一个在Internet上实时传播多媒体的技术标准,Microsoft公司的野心很大,希图用ASF取代QuickTime之类的技术标准。
ASF的主要优点包括:
本地或网络回放、可扩充的媒体类型、部件下载、以及扩展性等。
ASF应用的主要部件是NetShow服务器和NetShow播放器。
有独立的编码器将媒体信息编译成ASF流,然后发送到NetShow服务器,再由NetShow服务器将ASF流发送给网络上的所有NetShow播放器,从而实现单路广播或多路广播。
这和Real系统的实时转播则是大同小异。
2常见的视频的编码及封装格式
2.1常见视频编码格式
常见的编码格式有H.264、H.263、MPEG-1、MPEG-2、MPEG、4、SorensonSpark、VC-1、JPEG、RV、DivX、On2TrueMotionVP6。
对于高清视频来说,主流的编码技术目前主要有MPEG-2、DivX、XVID、H264/AVC、VC-1、RMVB和WMV-HD等等。
其中,H264/AVC、VC-1、MPEG-2是蓝光(Blu-rayDisc)所选择的编码格式,也是目前最流行的高清视频编码格式。
另外就是高清视频的封装格式,封装格式和编码格式是互相区别的,许多人会把它们混淆。
下图为常见编码格式的logo:
图1.1常见编码格式logo
1)H264/X264/AVC编码格式
绝大多数视听玩家对于H264编码都不会感到陌生,H264编码的身世显赫,是ITU-T(国际电信联盟视频编码专家组)与ISO/IEC(国际标准化组织动态图像专家组)合作组成的JVT(联合视频组)推动的新一代数字视频编码标准,也称为MPEG-4/AVC编码。
H264编码依托雄厚的背景,在技术上独树一帜,大幅领先于其它编码算法。
X264编码,是H264编码的一个开源分支,它符合H264标准,其功能在于编码,而不作为解码器使用,X264编码最大的特点在于注重实用,它在不明显降低编码性能的前提下,努力降低编码的计算复杂度,X264对于H264编码中的一些复杂编码特性做了折衷处理,其压缩视频体积小于XVID(MPEG-4)编码视频,以小体积、高画质的特点得到了广泛认可。
2)H.263编码格式
H.263是国际电联ITU-T的一个标准草案,是为低码流通信而设计的。
但实际上这个标准可用在很宽的码流范围,而非只用于低码流应用,它在许多应用中可以认为被用于取代H.261。
H.263的编码算法与H.261一样,但做了一些改善和改变,以提高性能和纠错能力。
1998年IUT-T推出的H.263+是H.263建议的第2版,它提供了12个新的可协商模式和其他特征,进一步提高了压缩编码性能。
如H.263只有5种视频源格式,H.263+允许使用更多的源格式,图像时钟频率也有多种选择,拓宽应用范围;另一重要的改进是可扩展性,它允许多显示率、多速率及多分辨率,增强了视频信息在易误码、易丢包异构网络环境下的传输。
另外,H.263+对H.263中的不受限运动矢量模式进行了改进,加上12个新增的可选模式,不仅提高了编码性能,而且增强了应用的灵活性。
H.263已经基本上取代了H.261
3)MPEG-1编码格式
MPEG-1是MPEG组织制定的第一个视频和音频有损压缩标准。
视频压缩算法于1990年定义完成。
1992年底,MPEG-1正式被批准成为国际标准。
MPEG-1是为CD光碟介质定制的的视频和音频压缩格式。
一张70分钟的CD光碟传输速率大约在1.4Mbps。
而MPEG-1采用了块方式的运动补偿、离散馀弦变换(DCT)、量化等技术,并为1.2Mbps传输速率进行了优化。
MPEG-1随后被VideoCD采用作为核心技术。
MPEG-1的输出质量大约和传统录像机VCR,信号质量相当,这也许是VideoCD在发达国家未获成功的原因。
4)MPEG-2编码格式
MPEG-2编码标准是由MPEG(MovingPictureExpertsGroup)工作组发布的视频与音频压缩国际标准。
MPEG-2编码于1994年发布,常用于广播信号(卫星电视、有线电视)的视频和音频编码,经过后期不断修改,不仅成为DVD的核心技术,还应用于HDTV高清电视传输。
5)MPEG-4编码格式
MPEG4于1998年11月公布,原预计1999年1月投入使用的国际标准MPEG4不仅是针对一定比特率下的视频、音频编码,更加注重多媒体系统的交互性和灵活性。
MPEG-4标准主要应用于视像电话(VideoPhone),视像电子邮件(VideoEmail)和电子新闻(ElectronicNews)等,其传输速率要求较低,在4800-64000bits/sec之间,分辨率为176X144。
MPEG-4利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图像质量。
6)SorensenSpark编码格式
Sorenson编解码器可以指三个专有的视频编解码器:
Sorenson视频,Sorenson视频3或SorensonSpark。
Sorenson视频也被称为Sorenson视频编解码器,Sorenson视频量化或SVQ。
SorensonSpark也被称为H.263或FLV1Sorenson(而且有时误为Flash视频(FLV),这是以AdobeFlash容器格式名称命名)。
这两种编解码器的设计由Sorenson媒体公司。
Sorenson视频是用在苹果的QuickTime和SorensonSpark在用在AdobeFlash容器中。
7)VC-1编码格式
WMV(WindowsMediaVideo)作为经久不衰的一种视频编码,一直在不断改进,2003年,微软基于WMV第九版(WMV9)编码技术,正式提出了VC-1编码标准,并于2006年正式成为国际标准。
VC-1编码作为较晚推出的高清编码算法,自然吸收了MPEG-2与H264编码的优点,其压缩比介于MPEG2和H264之间,编解码复杂性仅有H264的一半,即压缩时间更短、解码计算更小,在微软的大力推动下,VC-1编码已经得到了BD蓝光光盘、电影及电视学会(SMPTE)的支持。
近几年来,为了更好的推广WMV9/VC-1编码标准,微软不遗余力的建立了WMV-HD高清资源站点,大量发布采用VC-1编码压制的720P、1080P宣传片及演示片(WMV-HD视频格式),试图营造声势,吸引用户关注。
不过,中庸的技术(与H264相比无明显编码优势)、封闭的平台(限于Windows系统)、后发的劣势(2006年通过成为国际标准)仍然给微软VC-1编码的应用前景带来了较大的不确定性。
8)JPEG编码格式
JPEG是JointPhotographicExpertsGroup(联合图像专家小组))的缩写。
JPEG的压缩方式通常是破坏性资料压缩(lossycompression),意即在压缩过程中图像的品质会遭受到可见的破坏,有一种以JPEG为基础的标准ProgressiveJPEG是采用无失真的压缩方式,但ProgressiveJPEG并没有受到广泛的支援。
9)RV编码格式
RealVideo格式文件包括后缀名为RA、RM、RAM、RMVB的四种视频格式。
RealVideo是一种高压缩比的视频格式,可以使用任何一种常用于多媒体及Web上制作视频的方法来创建RealVideo文件。
例如Premiere、VideoShop以及AfterEffects等,对于文件的播放可用realplayer和暴风影音播放。
10)DivX编码格式
DivX格式,这是由MPEG-4衍生出的另一种视频编码(压缩)标准,也即我们通常所说的DVDrip格式,它采用了MPEG4的压缩算法同时又综合了MPEG-4与MP3各方面的技术,说白了就是使用DivX压缩技术对DVD盘片的视频图像进行高质量压缩,同时用MP3或AC3对音频进行压缩,然后再将视频与音频合成并加上相应的外挂字幕文件而形成的视频格式。
其画质直逼DVD并且体积只有DVD的数分之一。
这种编码对机器的要求也不高,所以DivX视频编码技术可以说是一种对DVD造成威胁最大的新生视频压缩格式,号称DVD杀手或DVD终结者。
11)On2TrueMotionVP6编码格式
On2TrueMotionVP6是主要的移动视频标准,他采用了AdobeFlashLite™3的一些标准,数以百计的网络门户,用户自己制作的内容,以及社交网络普遍采用基于Flash的VP6格式。
2.2视频的封装格式
封装格式其实是一个“容器”,它不同于编码格式,封装就相当于捆绑打包,将已经编码好的视频文件和音轨文件打包在一起,并按照一定规则建立排序和索引,便于播放器或播放软件来索引播放。
常见的封装格式有MKV、AVI、MOV、TS、PS等等,高清媒体文件的后缀名(扩展文件名)一般都是媒体的封装格式。
(1)MOV格式:
MOV多见于AppleQuickTime网站上的电影预告片。
MOV类似于RMVB,过于封闭自守,民间制作组没有人会用这个不方便的形式。
(2)AVI格式:
AVI封装是微软在上世纪90年代初创立的封装标准,是当时为对抗QuickTime的MOV格式而推出的,因为当时还没有流式播放需要,AVI的将索引布置在打包文件的尾部,这就使得AVI封装不能做到流式播放(流媒体)。
AVI封装只能支持有限的几种视频音频编码形式,且AVI不能支持音频的VBR动态比特率编码。
(3)TS格式:
TS(TransportStream)是一种比较先进的封装形式,蓝光原盘中,就采用了TS封装。
TS封装支持几乎所有编码的高清视频和音轨文件。
PS(ProgramStream)封装的技术基本和TS相同,但PS封装和AVI一样,都不是流媒体,不能够支持流式播放,PS封装使用在原先的HDDVD中。
在高清标准下,MPEG-2编码的视频文件主要采用TS封装格式。
(4)MKV格式:
MKV(Matroska)是一种新兴的多媒体封装格式,可以将各类视频编码、16条或以上不同格式的音频和语言不同的字幕封装在一个文件内,它具有开放源代码、音视频编码丰富、网络亲和性好等优势,已经得到众多视频压制组和玩家的支持,正逐渐成为高清视频的主流视频格式。
H264编码与X264编码目前大多采用MKV封装格式。
3视频的播放组件及调用流程
视频文件的解码过程如下依次需要用到的组件有“分离器”、“解码器”、“渲染器”,它们统称为“滤镜”。
3.1分离器(Splitter)
要正确地播放多媒体文件,播放器首先要正确地调用分离器,把视频流和(或)音频流正确地分离出来,然后交给解码器进行解码,这就是分离器的使命。
上文中说到有不少的封装格式,每一种封装格式都必须有相对应一种分离器,才能正确的把视频和音频分离出来以供解码器解码。
常用的分离器有:
ØGabestMPEGSplitter(MediaPlayerClassic作者编写的分离器)、
ØKMPSplitter(KMPlayer原配的分离器)
ØHailiMediaSplitter
这三种分离器能够支持较多的封装格式,其它的分离器还有
ØMoonlight-ElecardMPEG2Demultiplexer(月光分离器)、
ØnVIDIATransportDemux(nVIDIA公司的分离器,配合PureVideo使用)、
ØCyberLinkDemux(PowerDVD软件中的分离器)
3.2解码器(Decoder)
解码器在整个视频的播放中占据了最主要的位置,它的作用是对由分离器分离出来的音频流和视频流分别进行解码。
解码器又分为视频解码器和音频解码器。
常见的视频解码器有:
1)MPEG-2视频解码器
ØInterVideoVideoDecoder(WinDVD的解码器)
ØCyberLinkDTVVideo/SPFilter
ØCyberLinkVideo/SPFilter(PowerDVD的解码器)
ØMoonlight-ElecardMPEG2VideoDecoder
ØnVIDIAVideoDecoder(nVIDIAPureVideo的解码器)
ØSonicCinemasterVideo、GabestVideoDecoder
2)H264/X264/AVC视频解码器
ØCyberLinkH.264/AVCDecoder(PowerDVD的解码器)、
ØCoreAVCDirectShowVideoDecoder
ØMoonlightH264VideoDecoder
ØffdshowMPEG-4VideoDecoder
3)VC-1视频解码器
CyberLinkVC-1Deocder(PowerDVD的解码器)、MediaPlayerClassicVideoDecoder、WMVideoDecoderDMO(微软的解码器)等等。
常见的音频解码器有:
ØCyberLinkAudioDecoder(PowerDVD的解码器)
ØAC3Filter
ØInterVideoAudioDecoder
ØnVIDIAAudioDecoder
3.3渲染器(Renderer)
渲染器与解码器一样,分为视频渲染器和音频渲染器,解码后的视频数据经过视频渲染器的渲染后呈现到显示设备上,解码后的音频经过音频渲染器的渲染后从声卡输出。
渲染在视频播放的过程中是很重要的,因为它会影响到视频最终的效果,不同的渲染器有不同的技术特性,对电脑的配置(主要是CPU和显卡)的要求也不一样。
视频渲染器主要有以下几种:
1)旧式视频渲染器(VideoRenderer):
这种是最原始的渲染器,它接收到来自解码器解码后的数据流,在显示设备上显示。
这种渲染器基本上不能调用到显卡硬件特性,全靠CPU来完成渲染任务。
2)覆盖合成器(OverlayMixer):
覆盖合成器能够将若干路视频流合并输出到显示设备上,并且它能够很好地调用显卡硬件的拉伸,颜色空间变换等硬件功能,以减少对CPU资源的占用率。
视频覆盖的画面质量事实上取决于显卡硬件。
通常在使用覆盖合成器的时候无法直接对正在播放的视频截图。
3)VMR渲染器(VideoMixingRenderer):
VMR对覆盖合成器进行了改进,它是基于DirectX的视频渲染器,能够支持16路的视频流混合。
VMR根据DirectX版本的不同,可以分为VMR7和VMR9,其中VMR7基于DirectDraw7(2D),而VMR9基于Direct3D9(3D),VMR9可以支持视频特效(VideoEffects)和视频变换(VideoTransitions)。
VMR根据渲染模式的不同又分为“窗口化”(Windowed)、“无窗口”(Windowless)、“未渲染”(Renderless)模式。
4)EVR增强型视频渲染器(EnhancedVideoRenderer)
微软在WindowsVista系统就开始引入的新视频渲染器,当然也包含在新的操作系统Windows7中。
它与VMR最大的区别就是能够支持DXVA2.0。
二、RGB和YUV视频存储格式
视频数据,图像数据在存储中的存储格式主要有RGB和YUV。
RGB是多媒体数据进行数据存储采用的主流格式;YUV格式所需存储空间一般是RGB格式存储空间的一半,所以YUV格式主要用于多媒体数据传输中。
1RGB视频存储格式
1.1RGB概述
计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red)、G(Green)、B(Blue)相加混色的原理:
通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。
这种色彩的表示方法称为RGB色彩空间表示。
根据三基色原理,任意一种色光F都可以用不同分量的R、G、B三色相加混合而成。
F=r[R]+g[G]+b[B]
其中,r、g、b分别为三基色参与混合的系数。
当三基色分量都为0(最弱)时混合为黑色光;而当三基色分量都为k(最强)时混合为白色光。
调整r、g、b三个系数的值,可以混合出介于黑色光和白色光之间的各种各样的色光。
1.2常见的RGB格式
RGB的GUID(globallyuniqueidentifier全球唯一标识符)格式描述描述如下表所示:
表2.1RGB的GUID描述
RGB的GUID描述符
描述符说明
MEDIASUBTYPE_RGB12
每个像素用1位表示,需要调色板
MEDIASUBTYPE_RGB416
每个像素用4位表示,需要调色板
MEDIASUBTYPE_RGB8256
每个像素用8位表示,需要调色板
MEDIASUBTYPE_RGB565
每个像素用16位表示,RGB分量分别使用5位、6位、5位
MEDIASUBTYPE_RGB555
每个像素用16位表示,RGB分量都使用5位(剩下的1位不用)
MEDIASUBTYPE_RGB24
每个像素用24位表示,RGB分量各使用8位
MEDIASUBTYPE_RGB32
每个像素用32位表示,RGB分量各使用8位(剩下的8位不用)
MEDIASUBTYPE_ARGB32
每个像素用32位表示,RGB分量各使用8位(剩下的8位用于表示Alpha通道值)
1.3各种RGB格式介绍
RGB1、RGB4、RGB8都是调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER数据结构后面跟着一个调色板(定义一系列颜色)。
它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。
1)RGB1
以RGB1(2色位图)为例,比如它的调色板中定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF(白色),那么图像数据001101010111…(每个像素用1位表示)表示对应各像素的颜色为:
黑黑白白黑白黑白黑白白白…
2)RGB565
RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。
程序中通常使用一个字(WORD,一个字等于两个字节)来操作一个像素。
当读出一个像素后,这个字的各个位意义如下:
高字节低字节
RRRRRGGGGGGBBBBB
可以组合使用屏蔽字和移位操作来得到RGB各分量的值:
#defineRGB565_MASK_RED0xF800
#defineRGB565_MASK_GREEN0x07E0
#defineRGB565_MASK_BLUE0x001F
R=(wPixel&RGB565_MASK_RED)>>11;//取值范围0-31
G=(wPixel&RGB565_MASK_GREEN)>>5;//取值范围0-63
B=wPixel&RGB565_MASK_BLUE;//取值范围0-31
3)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 视频 编码 格式 RGBYUV 存储