视频基础知识
在数字通信、媒体存储和传输领域,音视频编解码技术起到了至关重要的作用,它能够有效地压缩音频和视频数据,减小存储和传输所需的带宽,并且保持较高的音视频质量。
本文介绍了视频基础知识,关于视频编解码见下篇文章 音频编解码。
1.图像
1.1 像素点
图像是由很多“带有颜色的点”组成的,这个点就是“像素点”。像素是图像显示的基本单位。
1.2 图像位深度/像素格式
图像位深度
一个像素的颜色在计算机中由多少个字节数据来描述。常见:1位、8位、16位、24位、32位。像素格式
用于表示色彩分量的大小和排列方式。这种格式以每个像素所使用的总位数以及用于存储像素色彩的红、绿、蓝和 alpha 分量的位数指定。
比如RGB565, RGB24, RGB32,YUV440P等等,但常用的是RGB格式。常见图像位深度
- 1位:能表示两种颜色,叫单色显示。示例就是小饭店、理发店门口的LED屏。
- 8位:能表示256种颜色,叫灰度显示。这时候是黑白的,没有彩色,我们把纯白到纯黑分别对应255到0,中间的数值对应不同的灰。示例就是以前的黑白电视机。
- 16位:能表示65536种颜色,可以彩色显示了,一般是RGB565的颜色分布(用5位二进制表示红色、用6位二进制表示绿色、用5位二进制表示蓝色)。因为RGB的颜色表达本身二进制位数不够多(导致红绿蓝三种颜色本身分的都不够细致),所以这样显示的彩色失真比较重。将RGB565称作假彩色。
- 24位:能表示16777216种颜色,这种表示方式和16位色原理是一样的,只是RGB三种颜色各自的精度都更高了(RGB各8位),叫RGB888,也叫RGB24。此时颜色比RGB565更加真实细腻,虽然说比自然界无数种颜色还是少了很多,不过由于人眼的不理想性所以人眼几乎不能区分颜色差别了。将RGB888称作真彩色。
- 32位:总共用32位二进制来表示颜色,其中24位表示红绿蓝三元色(还是RGB888分布),剩下8位表示透明度。这种显色方式就叫ARGB(A是阿尔法,表示透明度),现在PC机中一般都用ARGB表示颜色。
1.3 RGB和YUV的区别
RGB色彩空间
适合图像采集和显示,包括三原色:R红 G绿 B蓝。YUV色彩空间
适合编码和存储,包括:Y亮度 U色调 V饱和度。
人视觉系统对光的感知程度更高,需要用更多的数据表达亮度,用更少的数据表达色度。
而RGB三个分量都跟亮度有关。YUV采样模式
- 4:4:4 一个Y对应一组UV分量,一个像素占3个字节
- 4:2:2 两个Y共用一组UV分量,一个像素占2个字节。
- 4:2:0 四个Y共用一组UV分量,一个像素占1.5个字节
- 转换公式
K 权重因子会影响压缩率,例如 ITU BT.601 标准.
Y = 0.299R + 0.587G + 0.114B
Cb = 0.564(B - Y )
Cr = 0.713(R - Y )
2.数字化视频
- 数字视频可以理解为自然场景空间和时间的数字采样表示
- 空间采样的主要技术指标为:解析度(分辨率)
- 时间采样的主要技术指标为:帧率(帧/秒)
3.数字视频基础概念
3.1 帧
视频是由许多静态图片组成的,每一张静态图片就叫一帧。视频帧又分为 I 帧、 B 帧和 P 帧。
- I 帧:帧内编码帧,大多数情况下 I 帧就是关键帧,就是一个完整帧,无需任何辅助就能独立完整显示的画面。
- B 帧:帧是双向预测帧。参考前后图像帧编码生成。需要前面的 I/P 帧或者后面的 P 帧来协助形成一个画面。
- P 帧:前向预测编码帧。是一个非完整帧,通过参考前面的 I 帧或 P 帧生成画面。
3.2 帧率
帧率表示每秒传输或显示的图像帧数。帧率越高,图像运动越流畅。
常见的帧率有24fps(电影)、25fps(电视剧)和30fps(游戏)等。
3.3 分辨率
分辨率描述了图像的大小或尺寸,通常用像素的宽度和高度来表示。分辨率越高,图像就越清晰。
常见1920x1080。
3.4 位深
位深表示每个像素所能表示的颜色数量。位深越大,图像能表示的颜色就越丰富,色彩过渡也就越平滑。
常见:8位、16位、24位。
3.5 编码格式
为了有效地压缩数据,减小存储和传输所需的带宽,需要进行编码。例如视频文件中的视频轨数据需要进行编码。
常见编码格式:H264、HEVC、VP8、VP9、AVI、MPEG4
3.6 封装格式
视频封装格式一般由 文件标识头+多媒体信息+音视频轨(字幕)数据+视频帧索引块 组成。
常见封装格式:mp4、mkv、flv、avi、mov、wmv、rmvb