首页 > 代码库 > 流媒体学习笔记1:一个视频文件常用属性浅析之我见(bpp/vbr/resolution/fps)

流媒体学习笔记1:一个视频文件常用属性浅析之我见(bpp/vbr/resolution/fps)

因为工作原因,经常要接触视频相关的东西,而有一些视频常见的知识之前都是只知道个大概,甚至只是知道个名字的。很有必要对相关的知识整理下记录下来,以便有需要的人可以借鉴一二。但有些观点纯粹是天地会珠海分舵自己的理解,如果有误请指出,以免荼毒后人。


位深bpp

一般一个像素是由三原色RGB不同的颜色向量组成的,再加上个代表透明度的变量Alhpa值的话就是ARGB,当然,老一点的可能只有黑白,而没有RGB等。那么图片/视频文件中究竟由多少位来表示这些不同的颜色向量代表的就是位深,如只有黑白的话2位就足够了,0代表黑1代表白。代码级别的分析其查看天地会珠海分舵之前的一篇文章《《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第三节 - 裸图RawImage》》
下图是通过MediaInfo软件查看一个MP4视频文件显示的位深情况:
技术分享

码率

Wikipedia的解释媒体行业在指音频或者视频在单位时间内的数据传输率時通常使用码流码率,单位是kbps(千位每秒)

百度百科的解析视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。

个人见解:个人认为百度百科解析的很不清楚,怎么去理解数据传输时单位时间传送的数据位数,主要是数据传输到哪里的时候的单位时间传送数据位数?既然是码率,怎么整个解析一个”码“字都没有看到!? 如果后面加个”解码器“这样就好理解多了 - 视频数据传输到解码器进行解码播放时的单位时间传送的数据位数。所以码率还应该跟你设备的解码能力有关系,如果你有个10M的码率的视频文件,但是你的播放设备没有对应的解码能力,那么也是枉然。就好像你有前兆网络,但是网卡是百兆的,最终你得到就是百兆的速度。

再深一层理解的话,同样内容的视频,在使用不同编码压缩技术的时候码率可以是不一样的。因为不同的技术压缩比率会不一样,但是视频播放时长是固定的,所以单位时间内包含的编码信息就会不一样。当然,如果完全不进行压缩的话码率是最大的,同时视频文件也是最大的,视频也就是最清晰的。所以视频编/解码技术应该是要去挑战让码率(单位时间长度包含的数据)最小的情况下能在真正播放时还原成最清晰的视频信息。

到了当今的年代,我们看电影更多是直接网上进行播放了,那么码率跟网络速度又有什么关系呢?其实我的理解很简单,比如你的网络下行速度是1Mb/s,而你要播放的视频文件是1Mb/s的码率,那么你刚好能流畅的播放该电影视频;而如果同样的网速下面你的码率是10Mb/s,那么你只能卡卡的去看了。

所以我个人对码率会如此进行定义:单位时间内视频文件包含的视频编码信息的大小。因为视频文件都是压缩过的,所以这里更多是在指定码率下,该视频期望编码器在单位时间内需要处理的视频数据信息的大小。这里要注意视频文件的播放时间是固定的,所以码率越大,单位时间包含的信息量就越大,也就是组成视频的信息量越大,视频就越清晰。

当然,上面是为了描述简单,所以描述的情况是当视频使用的是固定码率的情况,固定码率也叫做CBR,也就是说整个媒体文件单位时间内包含的数据信息应该是一样的。这种情况对视频里面没有太多的动作切换的时候还可以,因为在短时间段内看来该视频是静止的,所以单位时间内同样数量的数据信息应该就能把图片呈现出来。但是当视频里面包含太多的快速变化的动作的时候,CBR就不适用了,如果继续使用CBR的时候,我们就会看到某些动作片里面的动作是很不连贯的,因为单位时间内没有足够的信息去描述整个动作过程中的所有阶段。这个时候VBR就出来了,也就是说在同一个视频文件里面,不同的时间段所拥有的数据量可能是不一样的,也就是码率是不一样的,在没有剧烈运动的部分码率会低一点,运动量大的地方码率会高点。所以VBR在一个媒体文件中会有多个属性,比如平均码率,最高码率,请看下图:

技术分享


分辨率

这个术语比较好理解,视频都是一帧一帧的图片组合起来的,所以视频的分辨率跟每一帧图的分辨率是一致的。也就是该图片的长度包含多少个像素点,宽度包含多少个像素点,两个乘起来就是了。关于图片细节的信息,请查看本人之前的一篇文章《《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第三节 - 裸图RawImage》》
所以所谓4K电视指的是4096×2160像素分辨率的电视机。有一点需要注意的是,类比上面的高码率视频需要对应的能播放高码率的设备,高分辨率的视频也需要有高分辨率的显示器才行,不然你拿个2K的电视播放个4K的源,结果还是2K。

至于dar,就是Display Aspect Ratio的缩写了,表示width比上height的比率,也就是视频宽和高的比例了。

技术分享


帧率FPS

按照物理学来说,我们的眼睛只能看到过去的事情,加入你现在在看一个美女在向你招手,光线从美女的手反射到你的眼睛然后成像就需要时间,你的眼睛接收到信息后会进行处理,而你的脑袋中剩余的其实是美女的残余影像。
据说连续的24张图片在一秒钟内顺序残留在你的脑袋中,你就会看到一个连续的动画,比如美女招手这个动作。如果一秒内低于24张的话就会明显感觉美女是像机器人表演一样卡卡的。这里的24张图片每秒术语就叫做FPS,也就是说24帧率的视频对人的感知来说是动态的。下图显示了FPS的一个示例:
技术分享

高于24帧的话视频的细节会呈现的越加清晰,比如进来新拍摄的电影《霍比特人》采用的就是48帧的新技术,但是因为每个细节都看的太清楚了,让习惯了在电影院看24帧电影的观众吐槽不习惯,太假之类的。比如网上的一张24FPS vs 48FPS的开车的图片就很清楚的描述了这个问题,我们已经习惯了左边的景象了,认为高速开车的时候该车就应该是模糊的,所以48FPS的电影观众应该还需要时间去适应了。
技术分享 

最后把自己的理解进行一下小结:
  • 位深bpp:表示用多少个位来表示ARGB。该属性影响的是我们的视频的色彩变现能力。
  • 码率:编码压缩后视频文件单位时间内包含的数据信息量,在可变码率视频编码的情况下,不同时间段的码率是不一样的。该属性影响的是视频的清晰度。
  • 分辨率:视频中一幅图片所包含的像素点信息数量,在MonkeyRunner的裸图中是以一个数组保存起来的。该属性从某一种程度上影响了视频的清晰度,因为一张图片拥有了更多像素来描述相应的细节,比如一个3K的显示器,播放4k分辨率的电影和播放1K分辨率的电影分辨获得的就是2k的清晰度和1k的清晰度。
  • 帧率:单位时间内播放的帧数。该属性主要影响的是播放的流畅度。

------------------------------------------To be Continue-----------------------------------------------------

作者

自主博客

微信

CSDN

天地会珠海分舵

http://techgogogo.com


服务号:TechGoGoGo

扫描码:

技术分享

http://blog.csdn.net/zhubaitian


流媒体学习笔记1:一个视频文件常用属性浅析之我见(bpp/vbr/resolution/fps)