视频编码的相关概念
视频编码标准
原始的视频文件非常大,不适合存储,传输。举个例子,按照最小的YU(Cb)V(Cr)4:2:0格式计算,标清分辨率1280*720,帧率25fp/s,数据量会有多大呢?
每帧 1280×720×8×(1+¼+¼)/8=1382400Bytes= 1350KB,约=1.318359375M,然后乘于25帧,每秒的原始数据是1.32M×25=33M。想想看,这还只是100万像素1s的视频文件大小,如果更高清,那庞大的数据量对于我们普通的网络带宽以及存储来说都会是巨大的负担。
视频文件按照一定的方法进行压缩,也叫编码,能够大幅度降低文件大小,这样显然更有利于视频文件的传输,存储以及应用。而这个压缩的标准,被制定出来,称为视频编码标准,以期能够被行业,用户等接受。
关于视频编码的标准,各公司,标准化组织和行业协会等都有涉及,目前主要的有制定视频编码标准的主要机构组织主要是这几个:
- ISO/IEC MPEG。ISO和IEC认可的MPEG组织,主要制定的视频编码标准为MPEG系列,MPEG-1、MPEG-2、MPEG-3、MPEG-4、MPEG-7等多个标准,最新的MPEG-21正在制定中。
- ITU-T。ITU-T是国际电信联盟下属的电信标准化部门,制定的视频编码标准主要有H.261,H.262,H.263,H.264,H.265,H.266等。
- 谷歌公司的视频标准是VP9,VP10等。
- 苹果公司的QUICKTime。
- 中国AVS,AVS2。中国安防行业制定的针对安防视频监控的SAVC编码标准。
- 美国电影协会的SMPTE。
- 微软公司的WMV。
- 微软,谷歌,苹果等公司联合组成了一个开放视频联盟(alliance for open media),推出了新的视频编码标准AV1。
组织机构 | 编码标准 |
---|---|
ISO/IEC MPEG | MPEG-1,MPEG-2,MPEG-4/AVC,MPEG-H Part2/HEVC |
ITU-T | H.261,H.262,H.263,H.264/AVC,H.265/HEVC,H.266/VVC |
SMPTE | VC-1,VC-2,VC-3,VC-5 |
AOM | AV1 |
VP3,VP6,VP7,VP8,VP9,VP10 | |
Apple | QuickTime |
中国标准化协会 | AVS,AVS2,AVS3 |
中国安全行业 | SAVC |
Microsoft | WMV |
视频编码压缩方式
视频压缩通常包含编码和解码两个过程。编码是将原始的视频资料转换成压缩后的格式,以便进行传输与存储。解码则是将压缩后的视频文件转换回原始的视频。
压缩的关键是去除视频文件里的冗余信息。主要的视频编码压缩方法有熵编码法,字典编码,运动补偿等。详细的理论可以参见文后的参考资料。
视频编码格式
为了适应储存和播放视频的需要,人为设定了不同的视频文件格式来把视频和音频放在一个文件中。
所以不同的格式的视频文件一定需要用匹配的播放器才能打开播放。
编码名称 | 描述 | 扩展名 |
---|---|---|
Flash Video | Adobe Flash开发的一种流行网络视频封装格式。 | flv |
AVI | 微软开发的,Audio Video Interactive,就是把视频和音频编码混合在一起存储。 | avi |
WMV | 同样是微软开发的。 | wmv/asf |
MPEG | MPEG认可的封装形式,还有简化的手机版。 | dat,vob,mpg/mpeg,mp4,3gp |
Matroska | 新的多媒体封装格,交互性很好。 | mkv |
Real Video | 制作起来比H.264编码简单。 | rm/rmvb |
QuickTime | 苹果公司开发,除了视频、音频以外还可支持图片、文字等 | mov,qt |
Ogg | 完全开放性的多媒体系统项目 | ogg,ogv,oga |
分辨率
标准 | 分辨率 | 比例 |
---|---|---|
QCIF | 176 x 144 | 1.22:1 |
CIF | 352 x 288 | 1.22:1 |
4CIF | 704 x 576 | 1.22:1 |
D1 | 720 x 576 | 4:3 |
SD | 720 x 576 | 4:3 |
HD | 1280 × 720 | 16:9 |
Full HD | 1920 × 1080 | 16:9 |
3.0MP/QXGA | 2048 × 1536 | 4:3 |
4.0MP/1440P | 2560 × 1440 | 16:9 |
5.0MP | 2592 × 1944 | 4:3 |
UHD 4K | 3840 × 2160 | 16:9 |
DCI 4K | 4096 × 2160 | 约17:9 |
Ultra HD 8K | 7680 × 4320 | 16:9 |
帧率/帧/组(GOP)
帧率
帧率是用于测量视频显示静态画面帧数的量度。测量单位为“每秒显示帧数”(Frame per Second,FPS)或“赫兹”,一般来说FPS用于描述视频每秒播放多少帧静态画面。
由于人类眼睛的特殊生理结构,如果所看画面之帧率高于每秒约10至12帧的时候,就会认为是连贯的,此现象称之为视觉暂留。这就是为什么电影胶片是一格一格拍摄出来,但是当快速播放时,我们看见的画面是连续的。
PAL(欧洲,亚洲,澳洲等地的电视广播格式)与SECAM(法国,俄国,部分非洲等地的电视广播格式)规定其更新率为25fps,而NTSC(美国,加拿大,日本等地的电视广播格式)则规定其更新率为29.97 fps。早期的电影胶卷则是以稍慢的24fps在拍摄。
一个视频序列中相邻的图片通常很相似,也就是说,包含了很多冗余,我们可以使用一定的方法来消除这种冗余,提高压缩比。
帧/组(GOP)
图像帧是一组一组进行处理的,这个组就是GOP(Group of pictures)。每组的第一帧(通常是第一帧)在编码的时候不使用运动估计的办法,这种帧称为帧内编码帧(Intra frame)或者I帧。该组中的其它帧使用帧间编码帧(Inter frame),通常是P帧。这种编码方式通常被称为IPPPP,表示编码的时候第一帧是I帧,其它帧是P帧。
I帧可用于实现快进、回退或其他随机存取功能。当新客户端开始浏览内容流时,编码器将按固定的时间间隔或按需要自动插入I帧。I帧的缺点就在于它消耗的比特更多。但另一方面,它不会生成许多由于丢失数据导致的伪像。
P帧代表预测性帧间帧,以早期的I帧和/或P帧部分作为参考。与I帧相比,P帧通常需要的比特更少,但它有一个缺点,即由于高度依赖于早期的P帧和/或I帧,它对于传输错误敏感。
在进行预测的时候,不仅仅可以从过去的帧来预测当前帧,还可以使用未来的帧来预测当前帧。当然在编码的时候,未来的帧必须比当前帧更早的编码,也就是说,编码的顺序和播放的顺序是不同的。通常这样的当前帧是使用过去和未来的I帧或者P帧同时进行预测,被称为双向预测帧,即B帧。这种编码方式的编码顺序的一个例子为IBBPBBPBB。
B帧是双预测性帧间帧,它以早期的参考帧I帧和未来帧P帧作为参考。采用B帧会增加延迟。
P帧只能参考先前的I帧或P帧,而B帧可以参考先前或随后的I帧或P帧。
有些网络视频编码产品可以支持用户自定义GOP长度(有些产品叫I帧间隔),这将决定在发送另一个I帧前应发送多少P帧。通过降低I帧的频率(更长的 GOP),可以降低比特率,减小视频文件大小。然而,如果网络上存在拥塞,视频质量可能会由于网络数据包丢失而下降。
一般的,如果以时间为单位,GOP长度设为1s或者2s,即25(30)帧中有一个I帧或者50(60)帧中有1个I帧。如果以其它为单位,GOP或者I帧间隔可以设为25/30或者50/60。
编码级别
安防视频监控编码产品中,H.264编码支持3中编码级别,从低到高分别为:Baseline、Main和High。
Baseline级别支持I/P帧,Main级别提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),High级别在Main的基础上增加了8x8内部预测、自定义量化、无损视频编码和更多的YUV格式(如4:4:4)等。
H.264的编码级别主要是针对兼容性,不同的规格能在相同级别上的平台应用。至于Baseline@Lx.x、Main@Lx.x、High@Lx.x形式则是在不同级别下的码流级别,数值越大码流就越大,更耗费资源。所以就码流而言High@L3.0<High@L4.0<High@L5.1。
H.265分为Main以及High两个编码层级Profile,同时还定义了不同Level水平、Tier等级。
- Profile规定了码流中使用了哪些编码工具和算法。
- Level 中规定了对给定Profile、Tier所对应的解码器处理负担和存储容量参数,主要包括采样率、分辨率、码率的最大值、压缩率的最小值、解码图像缓存区的容量(DPB)、编码图像缓存区的容量(CPB)等。
- Tier规定了每个水平的码率的高低。
比特率及控制方式
视频编码中码流(比特率)控制方式主要分为:VBR(动态比特率)与CBR(静态比特率)。比特率的大小决定了视频文件的大小,我们可以通过比特率计算录像视频文件的大小,参见--安防视频监控录像计算
一文。
VBR
Variable Bitrate,即动态比特率。也就是没有固定的比特率,压缩软件在压缩时根据音视频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式。
VBR也称为动态比特率编码,使用这个方式时,你可以选择从最差音视频质/最大压缩比到最好音视频质/最低压缩比之间的种种过渡级数,在H.264音视频文件编码之时,程序会尝试保持所选定的整个文件的品质,将选择适合音视频文件的不同部分的比特率来编码。主要优点是可以让音视频都能大致达到我们的品质要求,缺点是编码时无法精确估计压缩出来的文件大小。
CBR
Constants Bit Rate,即固定码率,就是静态(恒定)比特率的意思,CBR是一种固定采样率的压缩方式。优点是压缩快,能被大多数软件和设备支持,缺点是占用空间相对大,效果不十分理想,现已逐步被VBR的方式取代。
其他码流控制方法
在H.265编码中,华为海思引入了AVBR概念,A即是advanced,能比普通的VBR方式节省30%的码流。
还有些厂家结合VBR和CBR各自的优点,提出了CVBR码流控制概念。在图像内容静止时,节省带宽,有Motion发生时,利用前期节省的带宽来尽可能的提高图像质量,达到同时兼顾带宽和图像质量的目的。这种方法通常会让用户输入最大码率和最小码率,静止时,码率稳定在最小码率,运动时,码率大于最小码率,但是又不超过最大码率。
衡量标准
衡量视频编码技术的优劣,可以从运算复杂度和压缩质量两方面来看。
就运算复杂度而言,理想的编码器运算复杂度越低越好。而就压缩质量而言,必须同时考虑压缩后视频的比特率和有损程度。压缩后的比特率和有损程度皆为越低越好,两者之间存在一个折衷关系,理想的编码器旨在追求能够提供比特率和有损程度间的最佳折衷关系。
一般情况下,编码器的运算复杂度和压缩质量之间也存在一个折衷关系,根据应用的不同而有所抉择。例如当应用为视频资料的存储时,可以选择运算复杂度和压缩质量较高的设计。而当应用为视频会议或是手机视频通话,受限于即时(实时)通信的要求或是有限的运算资源,可能会选择运算复杂度和压缩质量较低的设计。
由于编码后的视频质量最终是由人眼所判断的,在衡量有损程度时,应使用与人类视觉感知相符的视频质量衡量标准。
参考资料:
- 维基百科:通用分辨率列表
- 视频压缩
- 视频编解码器
- 帧率
- encoding.com
- VP9
- Alliance for Open Media
- 视频文件格式
- 视频
- 720P
- 显示分辨率列表
- 运动补偿
- 图像群组