文章目录
  1. 1. 视频帧
    1. 1.1. 帧率
  2. 2. 色彩空间
    1. 2.1. RGB与YUV的换算
  3. 3. 音频
    1. 3.1. 采样率和采样位数
      1. 3.1.1. 声道数
      2. 3.1.2. 码率
    2. 3.2. 视频编码
      1. 3.2.1. H264
    3. 3.3. 音频编码
    4. 3.4. 音频容器
    5. 3.5. 硬解码和软解码

视频帧

视频是由一系列图片构成,每一张画面即视频帧,视频由许许多多视频帧构成

帧率

单位时间内帧的数量,单位是帧/秒(fps frames per second),表示一秒内包含多少图片

色彩空间

  • RGB
    通过RGB光的三原色,混合所有颜色,广泛的引用在现在的电子设备中
  • YUV
    这是一种亮度与色度分离的色彩格式
    早起的电视都是黑白的,即只有亮度Y,有了彩色电视后,加入了UV两个色度,形成了YUV也叫YCbCr
    Y: 亮度,即灰度值,表示亮度以外还包含较多的绿色通道量
    U: 蓝色通道与亮度的差值
    V: 红色通道与亮度的差值

人眼对亮度敏感,对色度不敏感,因此减少部分UV的数据量,人眼也无法感知,通过压缩UV的分辨率,在不怎么影响观感的前提下,可以减小视频的体积

RGB与YUV的换算

1
2
3
4
5
6
7
Y = 0.299R + 0.587G + 0.1148
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
----------------------------
R = Y + 1.114V
G = Y - 0.39U - 0.58V
B = Y + 2.03U

音频

音频的数据承载方式常见脉冲编码调制PCM
声音是一种波,有自己的振幅和频率,保存声音就是保存声音在各个时间点上的振幅,数字信号并不能连续保存所有时间点的振幅。
根据奈奎斯特采样定理:为了不失真地恢复模拟信号,采样率应该不小于模拟信号频谱中最高频率的2倍
PCM采集步骤:

模拟信号->采样->量化->编码->数字信号

采样率和采样位数

采样率即采样的频率
采样率要大于原声频率的2倍,人耳听到的最高的频率为20kHz,为了满足人耳听觉要求采样率至少为40kHz,通常为44.1kHz,更高的通常为48kHz。
波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号不连续,所以模拟信号量化后,只能取一个近似值的整数值,为了记录这些振幅值,采样器会采用一个固定的位数来记录这些振幅值,通常有8位、16位、32位。

位数 最小值 最大值
8 0 255
16 -32768 32767
32 -2147483648 214748367

声道数

指支持不同发声的音响的个数

码率

码率值一个数据流中每秒能通过的信息量,单位bps(bit per second)
码率 = 采样率 * 采样位数 * 声道数

视频编码

视频编码格式有很多,比如H26x和MPEG系列编码
其中 H26X(1/2/3/4/5) 系列由ITU(International Telecommunication Union)国际电视视讯联盟主导
MPEG(1/2/3/4) 系列由MPEG(Moving Picture Experts Group,ISO旗下组织)主导

H264

目前最流行的视频编码标准
H264由ITU和MPEG共同定制,属于MPEG-4第十部分内容

  • 视频由一帧帧的画面组成,但是视频中大多数画面内容相近,所以视频的数据不是所有的画面原始数据
    H264会根据一段时间内,画面的变化情况,选取一帧画面作为完整编码,下一阵只记录与上一帧完整数据的差别
    在H264中,三种类型的帧数据分别为
    I帧: 帧内编码帧,就是一个完整帧
    P帧: 前向预测编码帧,是一个非完整帧,通过参考前面的I帧或P帧生成
    B帧: 双向预测内编码帧,参考前后图像帧编码生成,B帧依赖其前最近的一个I帧或P帧以及其后最近的一个P帧
  • 图像组GOP 和 关键帧IDR
    Group of picture 指一组变化不大的视频组
    IDR都是I帧,可以防止一帧解码出错,导致后面的所有帧解码出错。当加码器在解码到IDR时,会将之前的参考帧清空,重新开始一个新的序列。这样即使前一帧出现重大的错误,也不会蔓延都后续的数据中。
  • DTS 和 PTS
    DTS Decoding Time Stamp 标示读入内存中数据流在什么时候开始送入解码器中进行解码,也就是编码顺序的时间戳
    PTS Presentation Time Stamp 标示编码后的视频什么时候被显示出来
  • 帧的色彩空间
    H264采用的是YUV
    YUV存储方式分为两大类:planar和packed
    planar 先存储Y紧接着存储U最后是V
    packed 像素点的Y、U、V连续交叉存储


    因为人眼对色度不敏感,所以可以通过省略一定的色度信息,即亮度公用一些色度信息进而节省存储空间,planar又区分了以下几种格式: YUV444、YUV422、YUV420
    YUV 4:4:4 每个Y对应一组UV分量

    YUV 4:2:2 每两个Y公用一组UV分量

    YUV 4:2:0 每四个Y公用一组UV分量

    其中最常用的就是YUV420
    -YUV420属于planar存储方式
    YUV420P 三面存储 数据组成为YYYYYYYYUUVV(如I420)或YYYYYYYYVVUU(如YV12)
    YUV420SP:两平面存储 分为两种类型YYYYYYYYUVUV(如NV12)或YYYYYYYYVUVU(如NV21)

音频编码

原始的PCM音频数据也是非常大的数据量,因此也需要对其进行压缩编码
音频的编码格式也有许多,比如 WAV MP3 WMA APE FLAC等等,后两种属于无损压缩格式
AAC是一种有损压缩技术,一种高压缩比的音频压缩算法,MP4视频中的音频数据,大多数时候都是采用AAC压缩格式
主要分为ADIF、ADTS
ADIF Audio Data Interchange Format 音频数据交换格式,这种格式的特征是可以确定的这个音频数据的开始,不需要进行音频数据中间开始解码,即它的编码必须在明确的开始处进行。

ADTS Audio Data Transport Strem 音频数据数据传输流,它是一个同步的比特流,解码可以在任意位置开始。

ADIF 数据

header raw_data
ADTS 一帧 数据格式
sync_word
:– :–

音频容器

常见的音视频格式map4、rmvb、avi、mkv、mov就是音视频编码数据的容器,用来把特定的标准编码的视频流和音频流混在一起

硬解码和软解码

硬解码指CPU、GPU等加码器硬件进行解码
软解码利用CPU计算能力进行解码,由于CPU的性能可能会比较慢和造成CPU发热,但是因为统一的算法,兼容性很好

文章目录
  1. 1. 视频帧
    1. 1.1. 帧率
  2. 2. 色彩空间
    1. 2.1. RGB与YUV的换算
  3. 3. 音频
    1. 3.1. 采样率和采样位数
      1. 3.1.1. 声道数
      2. 3.1.2. 码率
    2. 3.2. 视频编码
      1. 3.2.1. H264
    3. 3.3. 音频编码
    4. 3.4. 音频容器
    5. 3.5. 硬解码和软解码