音视频处理系列(一):视频知识入门
0 背景
随着以抖音代表的短视频平台的兴起,人们对视频形式接受度日益提高。在营销领域,也出现越来越多的视频创意。从主观感受来说,视频创意相较传统创意而言,包含了更多的信息,更能吸引眼球,进而达到更好的营销效果。
那么我们今天就先来了解一下视频的相关知识吧。
1 封装格式
提到视频,大家可能首先想到的是下载电影时,那些后缀名为mp4/mkv/avi的文件。也许有时候心里会产生疑问,他们的区别是什么呢?
实际上MP4也好,MKV也好,只是封装格式,它将视频的要素:图像和声音,按照自身的协议规范打包到一起。
视频文件中一般会有多个轨道,常见元素有:
- 视频(Video): 一般来说肯定都有
- 音频(audio): 一般来说也肯定有,但是有些情况是静音的,就没必要带了。可能有多条音轨
- 字幕(Subtitles): 这里字幕区别于整合在图像中的硬字幕,是可以通过播放器进行选择的。
每个轨道都有自己的格式,如下图,使用ffrobe 视频文件
指令查看视频信息如下
可以看到,视频为h264,音频为aac
2 视频要素
那么这个h264是什么东西呢?不要着急,先来介绍一下视频的几个要素。
2.1 帧率
相信大家都知道,视频是基于视觉暂留(Persistence of vision)现象,实际上由编排好序列的图片所组成,其中每一幅图片称为帧(frame),而每秒的帧数,称为帧率(frame rate,也写作FPS,即Frames per Second),帧率越高,视频就越接流畅,约逼真。按照人眼的特点,24hz以上不会感觉到卡顿,75hz以上很难察觉到差异,一般电影的帧率为24hz。
可能有的同学会说,为什么玩游戏的时候60fps都会觉得卡呢?游戏厂商为什么要追求超过75Hz的高fps呢?
这里简单说明一下,游戏的场景和本文说的视频有所不同:游戏引擎是实时计算渲染图像,输出帧的速度不够稳定。所以就需要进一步提升帧率,让卡顿的时候不让肉眼感觉出来。
2.2 分辨率
那么对于每一帧的组成元素:图片,如何衡量其质量呢?
计算机中,图片实际上是由很多微小的点——像素(Pixel)组成,我们通常说一幅图片的大小,例如是1920×1080,就是长度为1920个像素点,宽度为1080个像素点。乘积是2,073,600,也就是说,这个图片是两百万像素的。1920×1080,这个也被称为这幅图片的分辨率。
在视频中,有一些常用的分辨率:
- 标清 "Standard Definition" SD 720x576
- 高清 "High Definition" HD 1280x720
- 超清(全高清) "Full High Definition" 1920*1080
日常生活中下载的电影往往会写720p 1080p,这个p是啥意思?
p是代表逐行(Progressive)扫描,与之对应的是i 隔行(Interlace)扫描。同尺寸的帧,隔行扫描的像素只有逐行扫描的一半。具体这里就不细说了,有兴趣可以自行查阅。
2.3 颜色模型
上面说到图像是由像素点组成,每个点都是有不同的颜色,又是如何表示的呢?
- RGB模型
物理三基色分别是红(Red)、绿(Green)、蓝(Blue)。现代的显示器技术就是通过组合不同强度的红绿蓝三原色,来达成几乎任何一种可见光的颜色。在图像储存中,通过记录每个像素的红绿蓝强度,来记录图像的方法,称为RGB模型 (RGB Model)。常见的图片格式中,PNG和BMP这两种就是基于RGB模型的。
通过这种方式,一定能表达多少种颜色呢?256×256×256=16,777,216种,因此也简称为1600万色。而3个8次方,等于24,因为,这种方式表达出来的颜色,也被称为24位色。这个颜色范围已经超过了人眼可见的全部色彩,所以又叫真彩色。再高的话,对于我们人眼来说,已经没有意义了,完全识别不出来。 YUV模型
除了RGB模型外,还有一种广泛采用的模型,称为YUV模型,又被称为亮度-色度模型(Luma-ChromaModel)。它是通过数学转换,将RGB三通道转换为一个代表亮度的通道(Y,又称为Luma),和两个代表色度的通道(UV,并称为Chroma)来记录图像的模型。
上图Y'CrCb是YUV模型的一种Y=0.3R+0.59G+0.11B 这就是常用 的亮度公式。色差U、V是由B-Y、R-Y按不同比例压缩而成的。
上文视频信息的截图中,可以看到视频信息h264,后面有yuv420字样。实际上,在图像视频的加工与储存中,YUV格式一般更受欢迎,理由如下:
- 人眼对亮度的敏感度远高于色度,因此人眼看到的有效信息主要来自于亮度。
YUV模型可以将绝大多数的有效信息分配到Y通道。UV通道相对记录的信息少的多。相对于RGB模型较为平均的分配,YUV模型将多数有效信息集中在Y通道,不但减少了冗余信息量,还为压缩提供了便利 - 保持了对黑白显示设备的向下兼容
- 图像编辑中,调节亮度和颜色饱和度,在YUV模型下更方便。
- 人眼对亮度的敏感度远高于色度,因此人眼看到的有效信息主要来自于亮度。
那么yuv420当中的420指的是什么呢?
420是指采样方式,主流的采样方式除了这里的420还有444和422。
- yuv444可以认为就是RGB转换后的原始状态
- yuv422是指水平方向上的UV分量减半了
- yuv420水平垂直方向都会减半
UV分量减半的理论依据就是上文提到的,人眼对亮度的敏感度远高于色度,多数有效信息在Y通道。下图简要形象的说明了3种采样模式的差异
由上我们可以知道,采用yuv420节省UV通道的3/4数据量,也就是节省了2/3*3/4 = 1/2
最终展示的时候YUV模型的图像会经过矩阵运算转化成RGB模型,再渲染到显示器上。(yuv420,需要将UV两个通道扩大到原来大小,再进行运算)
3 视频编码
上面简单介绍了视频的组成,如上一部100分钟的高清(720P)电影需要多大的存储空间呢?(音频、字幕暂且忽略不计,实际上它们的体积相较而言确实可以忽略不计)
帧率 = 24
时长 = 100*60
每帧大小 = 分辨率*像素点大小 = 1280*720*24
存储空间 = 时长*帧率*帧大小 = 370.79 GB
如此大的体积,单说存储成本就够大了,更别说在网络上进行传输了。计算机领域常说"空间换时间","时间换空间",要想节省空间,自然就需要通过算法进行压缩了。通常来说,视频里面的冗余信息包括:
h264就是现行的编码算法之一了,其压缩率可达300~400:1。如此前文提到的100分钟的高清(720P)电影,仅需1G左右。
其他常见的编码格式还有h263,MPEG2,MPEG4,WMV,VC-1,VP8等
4 总结
综合上面所说我们了解到,视频实际上由视频流、音频流组成。视频流、音频流分别通过各自的编码格式压缩存储,而我们平时看到的mp4,mkv我们称为封装格式,它就好比一个饭盒,将饭(视频流)和菜(音频流)打包到一起。视频流重要的参数有:帧率,分辨率,颜色模式。
5 预告
下一篇——
音视频处理系列(二):音频那些事