【音视频开发】第一章 音视频基础
文章目录
- [【音视频开发】第一章 音视频基础](#【音视频开发】第一章 音视频基础)
- 一、简介
- 二、音视频录制播放原理
- 三、图像基础
- 四、视频基础
-
- 1.视频主要概念
- [2.I 帧、P 帧、B 帧](#2.I 帧、P 帧、B 帧)
- 3.常用视频压缩算法
- 五、音频基础
- 六、封装格式和音视频同步
一、简介
1.行业
- 互联网:短视频、直播、音视频童话、在线点播
- 半导体:手机、平板、机顶盒、电视、车载芯片等音视频中间件
- 安防:家庭摄像头、公共监控摄像头
- 新能源:摄像头传感器、音视频娱乐设备
- 元宇宙:以音视频为依托
2.学习路线
- 音视频基础 → 解复用 → 解码,编码 → 复用
- 音视频播放器 → 音视频录制软件
- 推流直播 → 媒体服务器转发 → 直播拉流
- 音视频一对一通话 → 音视频多人通话
二、音视频录制播放原理
1.音视频录制原理

- 时钟用于同步每一帧采样和图像
- 编码用于压缩文件大小
2.音视频播放原理

三、图像基础
1.像素
pixel = picture(pix) + element(el)
图像元素 = 图像 + 元素
2.分辨率
分辨率指的是图像的大小或尺寸,例如 1920 × 1080 就是值长有 1920 个像素,宽有 1080 个像素
3.位深
图片有三个通道,分别为红(R)、绿(G)、蓝(B),如果需要透明度,还会有 alpha 分量
如果每个通道有 8 bit 位深,则表示 256 种颜色,可以组成 256 × 256 × 256 = 16777216(1677万)种颜色
每个通道的位深越大,能够表示的颜色越多
4.帧率
帧率即 FPS(每秒多少帧画面)
- 电影 24FPS
- 电视剧 25FPS
- 监控 25FPS
- 音视频通话 15FPS
5.码率
码率指的是视频文件在单位时间内使用的数据流量,比如 1 Mbps
大多数情况下,码率越高,分辨率越高,log 级增长,但也有例外
对于同一个原始图像源,同样的编码算法,码率越高,图像的失真越小,画面越清晰
5.YUV
Y 表示明亮度(Luminance,Luma),也称灰阶值
U 和 V 表示色度(Chrominance,Chroma)
YUV 也是一种颜色编码方法,将亮度参量(Y)和色度参量(UV)分开进行表示的像素编码格式。这样分开的好处就是兼容黑白电视,并且降低色度的采样率不会对图像的质量影响太大,降低了视屏信号传输时对频宽(带宽)的要求
YUV 是一个比较笼统的说法,针对它的排列方式,可以分成很多种具体的格式:
- 打包(packed)格式:将每个像素点的 Y、U、V 分量交叉排列,并以像素点为单元连续地存放在同一数组中,通常几个相邻的像素组成一个宏像素(macro-pixel)
- 平面(planar)格式:使用三个数组分开连续地存放 Y、U、V 三个分量,即 Y、U、V 分别存放在各自地数组中
YUV 采用 A:B:C 表示法来描述 Y:U:V 采样频率比例,主要分为 4:4:4、4:2:2、4:2:0 这几种常用的类型
- 4:4:4 表示一个 Y 分量对应着一个 U 分量和一个 V 分量
- 4:2:2 表示每两个 Y 分量共用一个 U 分量和一个 V 分量
- 4:2:0 表示每四个 Y 分量共用一个 U 分量和一个 V 分量
6.RGB 和 YUV 的转换
- 通常情况下 RGB 和 YUV 直接的相互转换都是调用接口实现,比如 Ffmpeg 的 swscale 或者 libyuv 等库
- 主要转换标准是 BT601 和 BT709
7.YUV Stride 对齐问题
比如分辨率 638×480 的 YUV420P 图像,我们在内存处理的时候如果要以 16 字节对其,则638 不能被 16 整除,我们需要在每行尾部填充 2 个字节,就是 640
为什么需要对齐?
- 内存访问效率:现代 CPU/GPU 读取内存时,更偏向于读取连续的大块数据。如果内存地址是对齐的,读取速度会显著提升
- 硬件加速支持:很多硬件解码器、渲染器要求数据按 16 字节、32 字节,甚至 64 字节对齐
- 缓存友好型:对齐后数据更复核 CPU 缓存行大小,提高了缓存命中率
四、视频基础
1.视频主要概念
- 视频码率:kb/s,单位时间内使用的数据流量
- 视频帧率:fps,每秒帧数
- 视频分辨率:分辨率影响视频图像的大小
2.I 帧、P 帧、B 帧
I 帧(Intra coded frames):I 帧不需要参考其他画面而生成,解码时仅靠自己就重构完整图像
- I 帧图像采用帧内编码方式
- I 帧所占数据的信息量比较大
- I 帧图像是周期性出现在图像序列中的,出现频率可由编码器选择
- I 帧是 P 帧和 B 帧的参考帧(其质量直接影响到同组中以后各帧的质量)
- I 帧是帧组 GOP 的基础帧(第一帧),在一组中只有一个 I 帧
- I 帧不需要考虑运动矢量
P 帧(Predicted frames):根据本帧与相邻的前一帧(I 帧或 P 帧)的不同点来压缩本帧数据,同时利用了空间和时间上的相关性
- P 帧属于前向预测的帧间编码。它需要参考前面最靠近它的 I 帧或 P 帧来解码
B 帧(Bi-directional predicted frames):B 帧图像采用双向时间预测,可以大大提高压缩倍速
3.常用视频压缩算法
- MPEG2(MPEG 阵营)
- H264(MPEG 阵营)
- H265(MPEG 阵营)
- AVS(中国阵营)
- VP8(Google 阵营,WebRTC)
- VP9(Google 阵营,WebRTC)
五、音频基础
1.声音的物理性质
声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱的变化以波的形式向四周传播,当被人耳所接收时,我们就听见了声音
声音是由物体的振动产生的,这种振动引起了周围空气压强的振荡
声音的频率是周期的倒数,它表示的是声音在 1 秒钟内的周期数,单位是赫兹(Hz),表示每秒的振动数
声音有振幅,振幅的主观感受是声音的大小。声音的振幅大小取决于空气压力波距平均值(也称平衡态)的最大偏移量
2.数字音频
为了将模拟信号数字化,需要使用采样频率、采样量化、编码
计算机并不直接使用连续平滑的波形来表示声音,它是每隔固定的时间对波形的幅值进行采样,用得到的一系列数字量来表示声音
PCM(Pulse Code Modulation)脉冲编码调制,人耳听到的模拟信号,PCM 是把声音从模拟信号转化为数字信号的技术
采样频率
采样频率即每秒钟采样的点个数,常用的采样频率有:
- 22000(22kHz):无线广播
- 44100(44.1kHz):CD 音质
- 48000(48kHz):数字电视,DVD
- 96000(96kHz):蓝光,高清 DVD
- 192000(192kHz):蓝光,高清 DVD
根据 Nyguist 采样定律,要从采样中完全恢复原始信号波形,采样频率必须至少是信号中最高频率的两倍
人耳听到的频率范围是 20Hz ~ 20kHz,所以采样频率一般为 44.1kHz,这样就能保证声音到达 20kHz 也能被数字化,从而使得经过数字化处理之后,人耳听到的声音质量不会被降低
采样量化
采样是在离散的时间点上进行的,而采样值本身在计算机中也是离散的
采样的精度取决于它用多少位来表示,这就是量化。例如 8 位量化可以表示 256 个不同值,而 CD 质量的 16 位量化可以表示 65535 个值,范围为 [-32768, 32767]
3.音频基础名词
- 采样频率:每秒钟采样的点的个数
- 采样精度(采样深度):每个 "样本点" 的大小,常用的大小为 8bit、16bit、24bit
- 通道数:单声道、双声道、四声道、5.1声道
- 比特率:每秒传输的 bit 数,单位为 bps(Bit Per Second),间接衡量声音质量的一个标准,
- 没有压缩的音频数据的比特率 = 采样频率 × 采样精度 × 通道数
- 码率:压缩后的音频数据的比特率。常见的码率:
- 96 kbps(FM 质量)
- 18-160 kbps(一般质量音频)
- 192 kbps(CD 质量)
- 256-320 kbps(高质量音频)
码率越大,压缩效率越低,音质越好,压缩后数据越大。码率 = 音频文件大小/时长
- 帧:每次编码的采样单元数,比如 MP3 通常是 1152 个采样点作为一个编码单元,AAC 通常是 1024 个采样点作为一个编码单元
- 帧长:
- 可以指每帧播放持续的时间:每帧持续时间(秒)= 每帧采样点数/采样频率(Hz)
- 也可以指压缩后每帧的数据长度
- 交错模式:数字音频信号存储的方式,数据以连续帧的方式存放,即首先记录帧 1 的左声道样本和右声道样本,再开始帧 2 的记录
- 非交错模式:首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道样本
4.音频编码基本原理
数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽
数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩,降低数据量。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知的信号,它们对确定声音的音色,音调等信息没有任何帮助
冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为 20Hz~20kHz,除此之外的其他频率人耳无法察觉,都可视为冗余信号
此外,根据人耳听觉的生理和心理声学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号将被强音信号所掩蔽而听不见,这样弱音信号就可以视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应和时域掩蔽效应
- 频谱掩蔽:如果某个频率的声音特别强,那么它周围频率的声音就会被掩蔽
- 时域掩蔽:如果某个频率的声音特别强,那么它前面一段时间和后面一段时间的声音就会被掩蔽
压缩编码方法
当前数字音频编码领域存在着不同的编码方案和实现方式,但基本的编码思路大同小异
原始音频信号(时域)
↓
预处理(采样 & 量化)
↓
分帧与窗函数处理
↓
频域变换(FFT / DCT)
↓
心理声学分析(计算掩蔽阈值)
↓
量化与编码(自适应量化 + 熵编码)
↓
比特流形成(打包成文件)
↓
解码(逆量化 + 逆变换)
↓
重构的音频信号(时域)
5.音频编解码器选型
- OPUS
- MP3
- ACC
- AC3 和 EAC3
六、封装格式和音视频同步
1.封装格式
封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流、字幕按照一定的方案放到一个文件中,便于播放软件播放
一般来说,视频文件的后缀名就是它的封装格式
视频H264 + 音频AAC 封装为 MP4 是最为流行的模式
2.音视频同步
DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据
音视频同步方式:
- Audio Master:同步视频到音频
- Video Master:同步音频到视频
- External Clock Master:同步音频和视频到外部时钟
一般情况下 Audio Master > External Clock Master > Video Master