This is my study note of Audio and video development.

基础概念

帧内压缩和帧间压缩

  • 帧内压缩
    1
    帧内压缩(Intra-frame Compression)是指对视频帧内部的像素进行压缩。每一帧都被独立地进行编码,不依赖于前后帧的信息。这种压缩技术主要通过去除冗余信息和空间域的压缩算法来实现,比如使用离散余弦变换(DCT)来将图像分解为频域系数,再利用量化和熵编码等方法来减少数据量。帧内压缩能够提供较好的静态图像质量,适用于静止或运动不剧烈的场景。
  • 帧间压缩
    1
    帧间压缩(Inter-frame Compression)是指利用相邻帧之间的冗余性来进行压缩。视频序列中的连续帧之间通常具有相似的内容和运动矢量。帧间压缩采用差异编码的策略,通过记录当前帧与参考帧之间的差异来表示图像内容。通常使用运动估计与补偿来寻找最佳的参考帧,并利用运动矢量来表示像素位移。这样就可以仅保存差异信息,从而减少数据量。帧间压缩能够提供更高的压缩比,适用于动态场景。

如何采集音频

振膜通过空气抖动的幅度大小产生电学信号,通过A/DC将模拟信号量转换为电学信号量,即PCM脉冲调制对连续信号进行抽样、量化、编码成数字信号,这样就完成了音频信号的采集。

为什么高品质的音频采样率为≥44.1KHz

人耳能听到的声音范围为20-20khz,根据采样定理,采样频率应该为最高频率的两倍以上。理论上40khz的采样率就已经满足要求了,但是考虑到数据的混叠问题,因此采样率应该为2.5倍而非2倍。

为什么采样定理规定采样频率应该是最高频率的两倍以上

采样率的1/2为奈奎斯特频率,如果采样频率达不到数据最高频率的两倍,那么数据存在将高频信号转换为低频的可能。(因为此时,最高频率只是半个周期,若想采到完整数据,则需要获得完整的周期,即两倍的最高频率)。

为什么更好的选择是2.5倍或以上

当进行采样频率时,我们只想要20~20khz的信号,滤波器可以满足我们的需求,但是滤波器达不到完美的滤波,部分区域还存在混叠的可能,对应带框80%以上的部分,因此计算出采样频率提高到2.5倍时可满足要求。

理论上44K就已经能够无损,为什么还要进一步提高频率

无损只是理论上的,并且更高的采样频率对应更好的音质。

为什么要音频压缩?音频编码原理

如果不对音频进行压缩进行传送,将会占用极大的带框。音频编码原理——去除信号中的冗余成分。其中,冗余成分指的是不能被人耳感知到的信号,同时根据心理学研究,当一个强音信号和一个弱音信号一同存在时,弱音信号会被强音信号遮蔽,这部分信号也应该被去除。

  • 前掩蔽
    人耳在听到强信号之前的短暂时间内,已经存在的弱信号或被这笔而听不到
  • 同时掩蔽
    当强信号消失后与弱信号同时存在时,弱信号会被强信号所掩蔽而听不到
  • 后掩蔽
    强信号消失后,需经过较长的一段时间才能重新听见弱信号

什么是像素

像素指的是单位面积内构成图像点的个数,每个像素都有自己的位置和数值,代表该点图像应该呈现的样子。

为什么会有如此多的封装格式

为了适应不同的播放需求,比如网络流媒体播放、摄像头录制等。封装格式也称多媒体容器,将视频、音频、字幕等放在一个容器里打包。

什么是分辨率

  • 图像分辨率,指图像内单位英寸容纳的像素个数
  • 显示分辨率,指显示器中最大容纳的像素个数

码率

单位时间内传输的数据位数,码率 = 文件大小/时间。

什么是解复用

指解析视频的封装格式,得到包含的音视频码流,解复用时间越短,越快得到视频流,从而加速秒开,能够硬解码的情况优先考虑硬解码,因为硬解码速度优于软件。

为什么图像画面显示绿色

  • 当进行视频渲染时,无法渲染的画面一般用绿色、黑色或者前一图像进行填充,当视频参数改变时,解码端的SPS和PPS没有及时更新,导致渲染失败,画面显示绿色。
  • 当编码出错时,画面呈现绿色,因为编码失败时,yuv都等于0,对应RGB为:
    1
    2
    3
    R = 1.402 * (-128) = -126.598
    G = -0.34414(-128) - 0.71414(-128) = 44.04992 + 91.40992 = 135.45984
    B = 1.772 * (-128) = -126.228
    对应R、G、B为0,135,0,为绿屏。

为什么产生花屏

  • 丢失参考帧
    当丢失参考帧时,一般会导致解码失败,导致花屏或者绿屏。花屏或绿屏的严重程度根据丢失参考帧的重要程度决定。
  • 播放器没有从关键帧开始编码
    未从关键帧开始编码会丢失参考信息,因此一般播放器断网重连后都应该判断第一帧是否为关键帧。
  • 码流中图像尺寸发生变化
  • 硬编码解的兼容性问题

为什么FLV可用于直播而MP4不行

Flv格式的文件体积小,加载速度快,因此更适合做为网络视频,MP4虽然前端兼容性最好,但是体积大,解析起来复杂,所以相比之下不适合做为直播。

播放闪频

  • 播放器缓冲机制的问题
    当网络差的时候,画面的频繁缓冲会导致图片来回切换,导致闪频。
  • 推流端的影响
    画面合成时,一定要避免合成\没有合成两种画面的交替。

视频编码原理

数字视频中往往有很多冗余信息:

  • 数据冗余,例如空间冗余、时间冗余、信息冗余等,即图像的各像素之间有很强的相关性,删除这些冗余信息不会造成信息丢失,属于无损压缩。
  • 视觉冗余,人眼的一些特性,比如对视觉阈值、亮度和色度的敏感度不同,可以适量引入误差,可以一定的客观失真换取压缩,属于有损压缩。

压缩编码的方法:

  • 变换编码,将空间域描述的图像信号变换到频率域,通过转换到频率域可以去除相关和能量集中,以两张图片为例:
    Alt text

上图为一张8×8的图像块,其中每一个值都代表了该像素的亮度关系,可以看出整个图像块亮度比较平均,相邻像素间有较强的相关性,此时代入DCT变化后得到下图:

Alt text

从图中可以看出,左上角的低频特征获取较大占比,而右下角的高频特征分配到了较少的占比,由于人眼对图像的低频特征比较敏感,例如总体亮度,对高频信息不那么敏感,因此我们对低频特征细量化,高频特征粗量化,因此量化是一个有损压缩的过程,量化后图像如下:

Alt text

  • 熵编码
    对信源中出现概率大的符号用较小编码,对信源中出现概率小的符号用较大编码。

  • 运动估计和运动补偿
    运动估计:从前一图像和后一张图像寻找一个最为相似的图像块。
    运动补偿:通过与最为相似的图像块做差,得到残差图像块。

由于,残差图像块中数据都很小,因此压缩编码获得更好的压缩比。

概念

  • 模拟音频信号经过数模转换形成的二进制序列,叫做PCM。
  • 位深度用来表示一个采样点用多少位表示。
  • 采样点一般采用浮点数表示。