最近的工作要调研视频处理相关的问题,但被视频文件的格式、码率、分辨率、帧率、压缩比等等概念给弄的晕头转向,所以决定写下这个文章,记录一下自己的调查结果。为了让自己以后还能看明白,难免写的比较罗嗦。
对于阅读我文章的读者,我假设您有一些最基本的计算机知识,比如什么是Byte,颜色是如何在计算机中表示的等等。
另外需要说明的是,我们一般对视频的理解其实包含画面和声音两部分。本文我只研究了画面相关的一下内容,不涉及声音。
在介绍视频之前,我们需要先了解一下图片。因为所谓的视频,其实就是在你的眼前,按照一定的时间间隔,连续展示一组图片的过程。只要时间间隔足够短,你就会觉得眼前是一段连续的运动的画面,这就是视频。
BMP图片,又被称为位图,是由 像素(pixel) 组成的图片。先不管什么是像素,我们先看下图,直观感受一下。
这是失恋博物馆中的一个经典展品。远看这是一个美女的图片,走进了你会发现,组成这张美女图的是一张张小的照片。如果把这张美女图比作一个BMP图片的话,这一张张小照片就是像素。
所以什么是像素?抛开准确但复杂的理论定义,直观上来说像素就是一个带有颜色但非常小的圆点。
当我们把像素一行一行的排列起来,并且保证像素足够密集的时候,我们就得到了一张BMP图片。
BMP图片的尺寸指出了一张BMP图片包含了多少个像素点,一般以像素行列相乘的形式表达。比如,尺寸为10*20的BMP图片指的是每行10个像素点,共20行。(以上的解释其实仅仅是计算机编程领域的说法,在打印、photoshop等方面有不同的定义)
BMP图片的大小指出了保存一张BMP图片需要多少硬盘空间,单位是Byte(字节)。我们可以通过图片的尺寸得到像素点的数量,再乘以每个像素点所占的硬盘空间,就得到了BMP图片的大小。由于像素点仅包含颜色信息,所以像素的大小取决于颜色在计算机中的表示法(这个就不介绍了),有16位,24位,32位,64位,128位等。如果BMP图片中的像素采用32位表示法,则也称这是一张BMP32图片。其他依次类推,还有BMP16图片,BMP64图片等等。那么一张1280*720的BMP32图片的大小是多少呢?
1280 ∗ 720 ∗ 32 = 2949120 B y t e = 28.125 M B y t e 1280*720*32 = 2949120Byte = 28.125MByte 1280∗720∗32=2949120Byte=28.125MByte
也就是我们常说的28.125M。
BMP图片的分辨率指出了图片的细腻程度,单位是PPI,指的是每英寸长度上有多少个像素点,可细分为水平分辨率和垂直分辨率。经常使用Photoshop软件的专业人士对分辨率的概念应该很容易理解,但非专业人士往往将图片分辨率与图片的尺寸混淆,即认为1280720的BMP图片,分辨率也是1280720,甚至在一些文献里也有这样的混淆。但这种混淆不一定对分析问题产生大的影响,所以下文中我也就不反复强调了,图片的尺寸就是图片的分辨率。但我要强调的是,两者在根本的定义上还是不同的,如果涉及到打印机、photoshop图片处理等方面,还是要严格区分的。
上文提到,所谓的视频,其实就是在你的眼前,按照一定的时间间隔,连续展示一组图片的过程。
在视频领域,我们将这一组图片中的每一张,称为视频的一个帧。帧率就是“一定的时间间隔”的倒数,英文简称FPS。
例如,一秒钟展示20帧,我们就称这个视频的帧率(FPS)为20。
帧率越高,视频的连贯性就越好,反之,则表现为视频卡顿。这里强调一点,帧率不总是一个整数,有时会是小数。因为帧率是一个视频的统计结果,比如一个5s的视频包含112帧,这帧率是 112 / 5 = 22.4 112/5 = 22.4 112/5=22.4。
分辨率是用来表示画面细腻程度的指标,简单理解就是画面越清晰,分辨率就越高。
我们经常能在视频网站上看到这样的提醒:高清(1080P)、标清(720P),等等。在此引导下,人们就用1080P、720P这样的方式表示视频的清晰度,最后发展为视频分辨率是1080P的说法,甚至在一些文献中也是如此。其实这某种程度上是一种误会。
1080P、720P其实是显示器能力的指标。以1080P为例,1080P一般是1080P25的简称,1080P25的意思是显示器可以在逐行扫描的方式下(即P的含义),每秒显示25帧画面,每帧画面的尺寸为1920*1080。这其实是对硬件能力的表达。
那为什么会有“视频分辨率是1080P”的说法呢?因为用户想看到清晰的画面,仅仅显示器(硬件)能力够是不行的,视频文件(即视频源)的能力也要够。显示器1s可以显示25个1920 * 1080帧,视频文件就要每秒提供25个1920 * 1080帧。“视频分辨率是1080P”其实是想表达,这个视频文件可以支持1080P的显示器进行高清显示。
这种历史遗留的误会还有很多,仅就视频而论,我们听到”视频分辨率是1080P“这个说法,就应该明白视频中每一帧的尺寸是1920*1080的。
PS:以上说明其实还是不够精准的,例如对1080P显示器能力的解释并不完全准确。但我觉得足以抛砖引玉的让大家明白视频分辨率的含义。