1 录制播放原理图
以下是录制原理图,可以概括为采集–>编码–>封装。
以下是播放原理图,可以概括为解复用–>解码–>同步–>输出。
2 视频主要概念
(1)像素:像素是一个图片的基本单位,pix是英语单词picture的简写,加上英语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素”之意。例如1920x1080的战片,就是指横向有1920个像素点,竖向有1080个像素点,总共有200万像素,也俗称200万像素照片。
(2)分辨率:图像(或视频)的分辨率是指图像的大小或尺寸。通常使用像素表示图像的尺寸,常见的分辨率有:
360P(640x360)、720P(1280x720)、1080P(1920x1080)、4K(3840x2160)、8K(7680x4320)
(3) 位深:是指在记录数字图像的颜色时,计算机实际上是用每个像素需要的,代表一副图像中包含的二进制位的数量。我们看到的彩色图片,都有三个通道,分别位红(R)、绿(G)、蓝(B)。假设每个通道都用8bit表示,1个通道能表示256种颜色,所以可以组成256256256=16,777,216 = 1677万种颜色。每个通道的位深越大,能表示的颜色值就越大。日常生活中使用较多的还是8bit,也有更大的,例如现在的高端电视就是10bit.
(4) 帧率:即FPS(每秒有多少帧画面,FPS 帧率越高就代表视频画面越流畅,需要的设备的性能也越高,越低则越卡顿。一般图像帧率达到24帧,人肉眼察觉到的图像则认为是连续的。
- 电影帧率一般是 24fps(帧每秒);
- 电视剧一般是25fps;
- 监控行业常用 25fps;
- 音视频通话常用15fps;
(5) 码率:kb/s ,视频文件在单位时间内使用的数据流量,也叫码流量。比如1Mbps。码率越大,说明单位时间内取样率越大,数据流精度越大。
(6) Stride跨距:指在内存中每行像素所占的空间。为了实现内存对齐每行像素在内存中所占的空间并不一定是图像的宽度。如果图像的每一行像素末尾拥
有扩展内容,Stride 的值一定大于图像的宽度值,例如下图我们在内存处理的时候要以16字节对齐,但以下不能整除,座椅需要在每行尾部填充6个字节,即变成640,640*3/16 = 120,此时改图片的Stride为1920字节
视频帧的概念I 、P 、B帧
按照字节数来说, I帧> P帧 > B帧。
- I帧(Intra coded frames):关键帧,又称内部画面,采用帧内编码方式,所占书记的信息量比较大。I帧时周期性的出现在图像序列中的,出现频率可由编码器选择,是P帧B帧的参考帧,其质量直接影响到同组中各帧的质量,是帧组GOP的基础帧,(第一帧)在一组中只有一个帧,I帧不需要考虑运动矢量。
- P帧(Predicted frames):前向预测编码图像帧,它表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
- B帧(Bidirectionally predicted picture):双向预测编码图像帧,也称双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
GOP:简单来说就是两个IDR帧之间的距离,在码率不变的情况,一个GOP的值越大,P、B帧的数量就会越多,画面质量就会相对较好。IDR帧一定是I帧,但是I帧不一定是IDR帧
DTS:(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据
3 RGB YUV
RGB:红R、绿G、蓝B三基色。这里主要介绍RGB的排列,通常的图像像素是按照RGB的顺序排列的,但有些图像处理要转成其他顺序,比如OpenCV经常转成BGR的排列方式。
YUV:“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma)。它是将亮度参量和色度参量分开进行的像素编码格式。这样不但可以避免干扰,在没有UV信息时一样可以显示完整的图像,因而解决了彩色电视与黑白电视的兼容问题;还可以降低色度的采样率而不会对图像质量影响太大,降低了视屏信号传输时对频宽(带宽)的要求。
YUV格式
YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式:
- 打包(packed)格式:将每个像素点的Y、U、V分量交叉排列并以像素点为单元连续的存放
在同一数组中,通常几个相邻的像素组成一个宏像素(macro-pixel) - 平面(planar)格式:使用三个数组分开连续的存放Y、U、V三个分量,即Y、U、V分别存
放在各自的数组中。
YUV采样表示法
4 音频主要概念
频率:声音的频率是周期的倒数,它表示声音在1秒钟的周期数,单位是赫兹(Hz),千赫(kHz)表示每秒钟震动1000次,声音按频率可作如下划分:
- 次声: 0~20Hz
- 人耳能听见的声音: 20Hz~20KHz
- 超声 : 20KHz~20GHz
- 超特声 : 1GHz~10THz
采样频率:每秒钟采样的点的个数。常用的采样频率有:
- 22000(22kHz): 无线广播。
- 44100(44.1kHz):CD音质。
- 48000(48kHz): 数字电视,DVD。
- 96000(96kHz): 蓝光,高清DVD。
- 192000(192kHz): 蓝光,高清DVD
采样精度(采样深度):每个“样本点”的大小, 常用的大小为8bit, 16bit,24bit。
通道数:单声道,双声道,四声道,5.1声道。
比特率:每秒传输的bit数,单位为:bps(Bit Per Second) 间接衡量声音质量的一个标准。 没有压缩的音频数据的比特率 = 采样频率 * 采样精度 * 通道数。
码率: 压缩后的音频数据的比特率。常见的码率:
- 96kbps: FM质量
- 128-160kbps:一般质量音频。
- 192kbps: CD质量。
- 256-320Kbps:高质量音频
码率越大,压缩效率越低,音质越好,压缩后数据越大。 码率 = 音频文件大小/时长。
音频信号存储方式:
- 交错模式:数字音频信号存储的方式。数据以连续帧的方式存放,即首先记录帧1的左声道样本和右声道样本,再开始帧2的记录
- 非交错模式:首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本
数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩,降低数据量。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助
5 包装格式
封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。一般来说,视频文件的后缀名就是它的封装格式。