音视频基础
- 一、音视频录制原理
- 二、音视频播放原理
- 三、图像表示RGB-YUVV
- 1.图像基础概念
- 1.1 像素
- 1.2 分辨率
- 1.3 位深
- 1.4 帧率
- 1.5 码率
- 1.6 Stride跨距
- 2.RGB、YUV深入讲解
- 2.1 RGB
- 2.2 YUV
- 2.2.1 YUV采样表示法
- 2.2.2 YUV数据存储
- 2.3 RGB和YUV的转换(了解)
- 为什么解码出错显示绿屏?
- 2.4 YUV Stride对齐问题
- 四、视频
- 五、音频
- 1.基本概念
- 声音的物理性质
- 2.数字音频
- 2.1 采样频率
- 2.2 采样量化
- 3.音频常见名词
- 4.音频编码原理
- 4.1 频谱掩蔽效应
- 4.2 时域掩蔽效应
- 4.3 压缩编码方法
- 六、封装格式
- 七、音视频同步概念
一、音视频录制原理
- 采集阶段:
- 音频输入(麦克风)和视频输入(摄像头):这是录制过程的起始点,音视频数据从这里开始被系统捕获。
- 音频处理和视频处理:这些步骤涉及对捕获的音视频数据进行初步处理,如降噪、调整分辨率等。
- 队列管理:
- 音频帧队列和视频帧队列:处理过的音视频数据被暂存于帧队列中,以便进一步处理。
- 音频包队列和视频包队列:帧数据进一步封装成数据包,以便于传输或存储。
- 编码与合成:
- 复用器:音频和视频数据包在此阶段被合成为一个单一的流,准备进行存储或发送。
- 输出:
- 文件:最终的音视频流被存储为文件,或者被发送到网络等媒体。
二、音视频播放原理
- 输入:
- 文件:存储的音视频文件作为输入源。
- 解码与分离:
- 解复用器:输入的文件被分离成独立的音频和视频数据流。
- 队列管理:
- 音频包队列和视频包队列:分离出的数据流被组织成数据包,暂存于队列中。
- 音频帧队列和视频帧队列:数据包进一步解码为帧,以便播放。
- 输出:
- 音频输出和视频输出:解码后的音视频帧被发送到相应的输出设备,如扬声器和显示屏。
三、图像表示RGB-YUVV
1.图像基础概念
1.1 像素
1.2 分辨率
1.3 位深
1.4 帧率
1.5 码率
1.6 Stride跨距
- 填充字节:每行末尾填充2个字节。
- 计算步骤:对于分辨率为638x480的RGB24图像,每个像素占用3个字节(RGB各1字节),每行有638个像素。
- 每行的实际数据字节数计算为:638 * 3 = 1914字节。
- 如果要以16字节对齐,则需要将每行数据的字节数向上取整到最接近的16的倍数,即1920字节。
- Stride(步幅):Stride是指每行像素在内存中实际占用的字节数。在这种情况下,每行实际占用的空间为1920字节,这个数值即为该图像的Stride。
综上所述,对于638x480的RGB24图像,每行末尾填充2个字节,并且为了内存对齐需要将每行数据的字节数向上取整到16的倍数,因此最终每行实际占用的字节数为1920字节,这就是该图像的Stride。
2.RGB、YUV深入讲解
RGB:红R、绿G、蓝B三基色。
YUV:“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma)。
2.1 RGB
通常的图像像素是按RGB顺序进行排列,但有些图像处理要转成其他顺序,比如OpenCV经常转成BGR的排列方式。
通常在RGB图像中,每个像素由红色(R)、绿色(G)、蓝色(B)三个颜色通道组成,每个通道占据一个字节,即8位。这样一组RGB数据共占据24个位或3个字节,因此称为RGB24格式。
2.2 YUV
2.2.1 YUV采样表示法
YUV采用A:B:C表示法来描述Y,U,V采样频率比例,下图中黑点表示采样像素点Y分量,空心圆表示采样像素点的UV分量。主要分为 YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 这几种常用的类型。
2.2.2 YUV数据存储
下面以每个分量数据存储在一个char(或byte)中为例描述YUV的数据存储方式。
2.3 RGB和YUV的转换(了解)
为什么解码出错显示绿屏?
2.4 YUV Stride对齐问题
四、视频
五、音频
1.基本概念
声音的物理性质
- 振动
声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱变化以波的形式向四周传播,当被人耳所接收时,我们就听见了声音。
- 波形
声音是由物体的振动产生的,这种振动引起了周围空气压强的振荡,我们称这种振荡的函数表现形式为波形。
- 频率
声音的频率是周期的倒数,它表示的是声音在1秒钟内的周期数,单位是赫兹(Hz)。千赫(kHz),即1000Hz,表示每秒振动1000次。声音按频率可作如下划分:
次声:0~20Hz
人耳能听见的声音:20Hz~20KHz
超声:20KHz~1GHz
特超声:1GHz~10THz
- 振幅
声音有振幅,振幅的主观感觉是声音的大小。声音的振幅大小取决于空气压力波距平均值(也称平衡态)的最大偏移量。
2.数字音频
计算机并不直接使用连续平滑的波形来表示声音,它是每隔固定的时间对波形的幅值进行采样,用得到的一系列数字量来表示声音。下图是经过数字采样的波形示意图。
脉冲编码调制PCM(Pulse Code Modulation),脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。
2.1 采样频率
根据Nyguist采样定律,要从采样中完全恢复原始信号波形,采样频率必须至少是信号中最高频率的两倍。前面提到人耳能听到的频率范围是[20H~20kHz],所以采样频率一般为44.1Khz,这样就能保证声音到达20Khz也能被数字化,从而使得经过数字化处理之后,人耳听到的声音质量不会被降低。
2.2 采样量化
采样是在离散的时间点上进行的,而采样值本身在计算机中也是离散的。采样值的精度取决于它用多少位来表示,这就是量化。例如8位量化可以表示256个不同值,而CD质量的16位量化可以表示65536个值,范围为[-32768, 32767]。
下图是一个3位量化的示意图,可以看出3位量化只能表示8个值:0.75,0.5,0.25,0,-0.25,-0.5,-0.75和-1,因而量化位数越少,波形就越难辨认,还原后的声音质量也就越差(可能除了一片嗡嗡声之外什么都没有)。
3.音频常见名词
4.音频编码原理
数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为44.1KHz,每样值按16bit量化,则其码率为:
2*44.1kHz*16bit=1.411Mbit/s
如此大的带宽将给信号的传输和处理都带来许多困难和成本(阿里云服务器带宽大于5M后,每M价格是100元/月),因此必须采取音频压缩技术对音频数据进行处理,才能有效地传输音频数据。
数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩,降低数据量。数字音频压缩编码采取去除声音信号中冗余成分
的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助。
冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为20Hz~20KHz,除此之外的其它频率人耳无法察觉,都可视为冗余信号。此外,根据人耳听觉的生理和心理声学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号将被强音信号所掩蔽而听不见,这样弱音信号就可以视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应
和时域掩蔽效应
。
4.1 频谱掩蔽效应
4.2 时域掩蔽效应
4.3 压缩编码方法
六、封装格式
- 常见的视频封装格式
七、音视频同步概念
DTS(Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧(音频或视频)的数据。
- 音视频同步方式:
- Audio Master:同步视频到音频
- Video Master:同步音频到视频
- External Clock Master:同步音频和视频到外部时钟。
- 一般情况下 Audio Master > External Clock Master > Video Master
数据。
PTS(Presentation Time Stamp):即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧(音频或视频)的数据。
- 音视频同步方式:
- Audio Master:同步视频到音频
- Video Master:同步音频到视频
- External Clock Master:同步音频和视频到外部时钟。
- 一般情况下 Audio Master > External Clock Master > Video Master