目录
码率
帧率(FPS)
GOP(Group of picture)
清晰度
为什么有这样的关系呢?请看下面的分析:(可直接到文章末尾看原因)
视频码率、帧率和分辨率到底哪一个影响电影的清晰度
码率
影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小。
码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。也就是取样率(并不等同与采样率,采样率的单位是Hz,表示每秒采样的次数),单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来cbr(固定码率)与vbr(可变码率), “码率”就是失真度,码率越高越清晰,反之则画面粗糙而多马赛克。
码率,是单位时间内视频的数据量,单位是 bps (bit per second,位每秒),一般使用 kbps(千位每秒)或Mbps(百万位每秒)。
视频无压缩情况下码率的计算公式:
分辨率 × 位深 × 帧速率 ÷ 1024 ÷ 1024
单位:Mbps
比如,分辨率为 1920 x 1080、位深为 8 bits、帧速率 25 fps 的视频,无压缩状态下的码率应为 1186 Mbps,约 1.2 Gbps。
(1920×1080)×(8×3)×25fps÷1024÷1024
当然,按当今电子设备的性能,所有的视频在编码时都必须压缩,否则是无法存储与传输,更不用说录制了。
当分辨率、位深度、帧速率等参数相同的情况下,不同的码率,决定着编码器压缩视频的程度,是决定视频最终质量和文件大小的关键因素。
通常,码率越低,表示压缩程度越高,画质越差。码率越高,视频质量相对越高,视频文件也就越大。
码率继续解释(引自另一篇文章):
码流(Data Rate)是指视频文件在单位时间内使用或传输的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。
当然,码流越大,文件体积也越大,其计算公式是文件体积=时间X码率/8。例如,网络上常见的一部90分钟1Mbps码流的720P RMVB文件,其体积就=5400秒×1Mb/8=675MB。
码率计算公式(视频以单位M计算需要乘以1024转换为kb):
【码率】(kbps)=【文件大小】x8 x 1024/【时间】(秒)
码率计算公式(视频以单位G计算需要乘以1024x1024转换为kb,视频以单位kb计算就不需要乘以1024):
【码率】(kbps)=文件大小(KB) * 8 / 时间(秒)
举例:视频文件的容量为 3.446G,视频长度100 分钟(6000 秒),计算结果:
码率约等于 :3.446 * 1024 * 1024 * 8 / 6000 = 4817.857
约等于:4818kbps
通常来说,一个视频文件包括了画面及声音,例如一个RMVB的视频文件,里面包含了视频信息和音频信息,音频及视频都有各自不同的采样方式和比特率,也就是说,同一个视频文件音频和视频的比特率并不是一样的。而我们所说的一个视频文件码流率大小,一般是指视频文件中音频及视频信息码流率的总和。
码率的作用
码率越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是,视频画面更清晰画质更高。 视频在经过编码压缩时可能会降低码率,过低的码率会造成画面中出现马赛克,既画面中一些区域的色阶劣化,而造成颜色混乱导致看不清细节的情况(如新闻中犯罪嫌疑人的头像经常使用)。因为每个像素都需要保留相应的信息,而降低码率后也相应的降低了其保留的信息,而没有信息的像素只能向周围的像素共享信息,这样就会显得颜色混乱,画面惨不忍睹。但是在码率恒定的情况下,我们可以通过降低分辨率也就是每帧画面中像素数量来规避马赛克,因为像素越少,就越不需要共享像素来渲染。
选中视频文件右击属性-详细信息,即可查看视频的码率,这是我录制的1920*1080分辨率的视频如下信息:
视频大小为28M,时长8分钟23秒,其码率:
28x1024x8/(8x60+23)=457kbps
约等于460kbps
数字电影倡导联盟 DCI Digital Cinema Initiatives规定了 DCP Digital Cinema Package包的上限码率为 250 Mbps。流媒体的码率要求比这个要低许多。
音频码率
音频也有码率,只不过音频的数据量相对少很多,单位通常为 kbps(千位每秒)。
音频的码率=采样率 x 位深度 x 声道
通常来说,一个视频文件包括了画面及声音,例如一个RMVB的视频文件,里面包含了视频信息和音频信息,音频及视频都有各自不同的采样方式和比特率,也就是说,同一个视频文件音频和视频的比特率并不是一样的。而我们所说的一个视频文件码流率大小,一般是指视频文件中音频及视频信息码流率的总和。
以国内最流行,大家最熟悉的RMVB视频文件为例,RMVB中的VB,指的是VBR,即Variable BitRate的缩写,中文含义是可变比特率,它表示RMVB采用的是动态编码的方式,把较高的采样率用于复杂的动态画面(歌舞、飞车、战争、动作等),而把较低的采样率用于静态画面,合理利用资源,达到画质与体积可兼得的效果。
位深:每个像素在计算机里是如何“定量”存储的
对于 RGB 图像,如果我们分别使用 8bit (1个字节)来存储色彩空间的各个通道分量,RGB分别代表的是红、绿、蓝三原色,每种颜色代表一个通道分量,也即三个通道,则一个完整的 RGB 像素将占用 3*8 = 24bit 空间(3个字节)。此时,我们称:
通道位深:8bit,表示存储色彩空间的一个分量(通道)需要 8bit 空间;
像素位深:24bit,表示存储一个 RGB 像素需要 24bit 空间。
本文中,除非特别说明外,我们提及的图像位深均指像素位深。
需要补充的是,图像位深 24bit 、通道位深 8bit 是比较标准的位深配置,大家可能还会接触到诸如 32bit、16bit、8bit 等图像位深,它们并不是 3 的倍数,无法平摊到 RGB 或者 YUV 的三个通道上。我们应该如何理解这些 “不规则” 的图像位深呢?
其实,我们只要确认到具体的通道位深,就可以比较清晰的理解了,如下:
32bit 图像位深:在 24bit RGB 图像的基础上,增加了一个 8bit 的透明通道 A。比如我们上篇推文提到的 RGBA、BGRA 等等,可以称为 RGBA32、BGRA32;
16bit 图像位深:R、G、B 通道分量,分别使用 5bit、6bit、5bit 通道位深 ,可以称为 RGB565;
8bit 图像位深:R、G、B 通道分量,分别使用 2bit、3bit、3bit 通道位深,可以称为 RGB233。
除上述举例外,还会有诸如 RGBA4444、RGB555 等等情况。当脱离本文范畴,大家在实际应用中接触到图像位深时,仍需要明确其具体含义,究竟是像素位深、还是通道位深、每个通道又是怎么分配的,避免混淆。
现在,让我们再回到图像位深为 24bit 、通道位深为 8bit 的配置上。在该配置下,RGB 的每一个通道分量可表示 2^8 = 256 个值。这意味着,如果仅考虑 R 分量,就会有 256 种深浅不同的红色。以此类推,三个通道综合,即可以得到 (28)3 = 16,777,216 种不同的组合,每种组合表示不同的颜色。这也就是之前的推文中我们说 “RGB 色彩空间可以表示约 1677 万种色彩” 的原因。
显然,图像位深越大,其像素可表示的颜色数量就越多,视频图像的色彩自然也就越丰富、细腻,在色彩渐变处也会更加平滑。有一个比较极端的比喻可以用于帮助理解:试想我们要绘制一幅包含了七色彩虹的画,那么拥有七支不同颜色的画笔(高位深)和 只拥有单颜色的画笔(低位深),在绘制效果上自然会呈现出巨大的差异。
分辨率,其表示的含义为:图像在水平方向、垂直方向上,每行、每列的像素 “个数”。
宽(Width):水平方向每行的像素个数,等于图像分辨率的宽
高(Height):垂直方向每列的像素个数,等于图像分辨率的高
如下图所示,对于分辨率为 540x960 (宽 x 高)的 RGB 图像,其水平方向每行有 540 个 RGB 像素,垂直方向每列有 960 个 RGB 像素。
上图示,像素排布,分辨率 540x960,宽 x 高
不难发现,分辨率宽高相乘得到的数值 = 图像中像素的总个数,540 x 960 的 RGB 图像中包含 518400 个像素,分辨率越高,像素的个数也就越多。但是这51.84万个像素的颜色信息是否都会被计算机存储下来呢?答案是不会的,收到压缩算法的影响,其中空间冗余、时间冗余等,都会舍弃很多像素的信息。这在视频解压还原时,将会存在失真。
今天大家了解到分辨率与图像宽高、像素个数的关系即可。
现在,我们已经通过分辨率信息,确定了图像每行的像素个数,可以尝试计算每行数据的长度(字节)。因为视频图像的处理通常是逐行进行的,计算机更关注每行有多少数据,而对于具体有多少行(Height)没有太多的要求。
以 24bit 的 RGB 图像为例,假设分辨率为 538 x 960,因为每个像素的 R、G、B 分量都连续存储在同一平面上(详见前文-色彩和色彩空间-中篇),我们可以通过如下步骤,计算每行像素的字节长度:
每行像素的个数 = 图像分辨率宽 = 538
每行像素的字节长度 = 像素位深 x 每行像素的个数 = 24 bit x 538 = 1614 byte( 注:1 byte = 8 bit)
此帧图片所有的像素信息字节大小=像素位深 x 每行像素的个数 x 像素行数
上面这个此帧图片大小公式不就是:像素位深 x 分辨率
上面是一帧图片上所有像素信息数据的大小,那么每秒24帧的视频,1秒钟传输的视频数据大小计算公式不就是码率的公式了吗:
分辨率 × 位深 × 帧速率 ÷ 1024 ÷ 1024
单位:Mbps(字节每秒转换为千字节每秒需要除以1024,转为M每秒需要除以两次1024)
帧率(FPS)
影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
帧率就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。每秒显示的图片数影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。由于人类眼睛的特殊生理结构,如果所看画面之帧率高于16的时候,就会认为是连贯的,此现象称之为视觉暂留。并且当帧速达到一定数值后,再增长的话,人眼也不容易察觉到有明显的流畅度提升了。
分辨率:影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
带宽、帧率(FPS)
例如在ADSL线路上传输图像,上行带宽只有512Kbps,但要传输4路CIF分辨率的图像。按照常规,CIF分辨率建议码率是512Kbps,那么照此计算就只能传一路,降低码率势必会影响图像质量。那么为了确保图像质量,就必须降低帧率,这样一来,即便降低码率也不会影响图像质量,但在图像的连贯性上会有影响。
帧组GOP(Group of picture)
关键帧I帧(IDR帧)的周期,即从一个关键帧开始到下一个关键帧结束之间的帧,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。
需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。
同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。
常见编码模式:
VBR(Variable Bitrate)动态比特率也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;
ABR(Average Bitrate)平均比特率是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。
CBR(Constant Bitrate)常数比特率指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。
高清视频
目前的720P以及1080P采用了很多种编码,例如主流的MPEG2,VC-1以及H.264,还有Divx以及Xvid,至于封装格式更多到令人发指,ts、mkv、wmv以及蓝光专用等等。
720和1080代表视频流的分辨率,前者1280*720,后者1920*1080,不同的编码需要不同的系统资源,大概可以认为是H.264>VC-1>MPEG2。
VC-1是最后被认可的高清编码格式,不过因为有微软的后台,所以这种编码格式不能小窥。相对于MPEG2,VC-1的压缩比更高,但相对于H.264而言,编码解码的计算则要稍小一些,目前来看,VC-1可能是一个比较好的平衡,辅以微软的支持,应该是一只不可忽视的力量。一般来说,VC-1多为“.wmv”后缀,但这都不是绝对的,具体的编码格式还是要通过软件来查询。
总的来说,从压缩比上来看,H.264的压缩比率更高一些,也就是同样的视频,通过H.264编码算法压出来的视频容量要比VC-1的更小,但是VC-1 格式的视频在解码计算方面则更小一些,一般通过高性能的CPU就可以很流畅的观看高清视频。相信这也是目前NVIDIA Geforce 8系列显卡不能完全解码VC-1视频的主要原因。
PS&TS是两种视频或影片封装格式,常用于高清片。扩展名分别为VOB/EVO和TS等;其文件编码一般用MPEG2/VC-1/H.264
高清,英文为“High Definition”,即指“高分辨率”。高清电视(HDTV),是由美国电影电视工程师协会确定的高清晰度电视标准格式。现在的大屏幕液晶电视机,一般都支持1080P和720P,而一些俗称的“全高清”(Full HD),则是指支持1080P输出的电视机。
目前的高清视频编码格式主要有H.264、VC-1、MPEG-2、MPEG-4、DivX、XviD、WMA-HD以及X264。事实上,现在网络上流传的高清视频主要以两类文件的方式存在:一类是经过MPEG-2标准压缩,以tp和ts为后缀的视频流文件;一类是经过WMV-HD(WindowsMedia Video HighDefinition)标准压缩过的wmv文件,还有少数文件后缀为avi或mpg,其性质与wmv是一样的。真正效果好的高清视频更多地以H.264与VC-1这两种主流的编码格式流传。
一般来说,H.264格式以“.avi”、“.mkv”以及“.ts”封装比较常见。
清晰度
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
在码率一定的情况下,分辨率在一定范围内取值都将是清晰的;同样地,在分辨率一定的情况下,码率在一定范围内取值都将是清晰的。
在视频压缩的过程中, I帧是帧内图像数据压缩,是独立帧。而P帧则是参考I帧进行帧间图像数据压缩,不是独立帧。在压缩后的视频中绝大多数都是P帧,故视频质量主要由P帧表现出来。由于P帧不是独立帧,而只是保存了与邻近的I帧的差值,故实际上并不存在分辨率的概念,应该看成一个二进制差值序列。而该二进制序列在使用熵编码压缩技术时会使用量化参数进行有损压缩,视频的质量直接由量化参数决定,而量化参数会直接影响到压缩比和码率。
视频质量可以通过主观和客观方式来表现,主观方式就是通常人们提到的视频清晰度,而客观参数则是量化参数或者压缩比或者码率。在视频源一样,压缩算法也一样的前提下比较,量化参数,压缩比和码率之间是有直接的比例关系的。
重新采样
分辨率的变化又称为重新采样。由高分辨率变成低分辨率称为下采样,由于采样前数据充足,只需要尽量保留更多的信息量,一般可以获得相对较好的结果。而由低分辨率变成高分辨率称为上采样,由于需要插值等方法来补充(猜测)缺少的像素点,故必然会带有失真,这就是一种视频质量(清晰度)的损失。
关于一个视频流的数据量:
码率如果为10Mb/s,代表1秒钟有10M bit的视频数据,对于YUV422格式的1080P视频而言,一帧图像是1920x1080x2x8/1024/1024 = 31.64Mbit,1秒钟30帧图像的话,则有949.2Mb/s,可见其数据量之大,不压缩根本无法网上传播,所以一定要经过视频压缩处理,不要以为1080P的视频就一定是高清的,清晰度还跟视频码率密切相关,对于1080P的视频而言,蓝光视频的码率是20Mb/s,一般下载的视频码率大都是10Mb/s,一些IPCamera/无人机的码率是2~8Mb/s,而很多视频网站的码率甚至低于5M/s,其实有时还不如高码率的720P清晰。
好的画质是分辨率、帧率和码率三者之间的平衡:
码率不是越大越好
如果不做码率大小上的限制,那么分辨率越高,画质越细腻;帧率越高,视频也越流畅,但相应的码率也会很大,因为每秒钟需要用更多的数据来承载较高的清晰度和流畅度。这对云服务厂商而言这是好事(收入跟流量呈正比),但对您可能意味着更多的费用开支。
帧率不要超过24
如果限定一个码率,比如800kbps,那么帧率越高,编码器就必须加大对单帧画面的压缩比,也就是通过降低画质来承载足够多的帧数。如果视频源来自摄像头,24FPS已经是肉眼极限,所以一般20帧的FPS就已经可以达到很好的用户体验了。
有些玩过3D游戏的朋友可能会说,游戏的帧率越高越流畅。这里要注意一定不要混淆场景:游戏追求高帧率的目的是为了尽可能让3D模型渲染出来的运动效果更加接近真实运动轨迹,所以帧率越高越好。但对摄像头而言,它要采集的目标是真实世界的物体,真实世界本来就没有刷新率的说法,所以这个理论不适用。
分辨率不盲目攀高(为什么码率一定的情况下,分辨率越高,清晰度越低)
如果限定一个码率,比如800kbps,那么分辨率越高就会让编码器越“为难" ,可以想象,它必须拆东墙补西墙,通过减少色彩信息或者引入马赛克这种“鱼目混珠”的手段来承载足够多的像素点。在码率一定的情况下,分辨率在一定范围内取值都将是清晰的;同样地,在分辨率一定的情况下,码率在一定范围内取值都将是清晰的。所以,同样的是2G的一个电影文件,1080p画质的版本可能不如720p画质的版本看起来更清晰。
转载整理自:码率(kbps)、帧率(FPS)、分辨率和清晰度的联系与区别_码率和帧率_一点一点的进步的博客-CSDN博客