目录
一、视频基本概念
1.1视频的主要概念
视频码率:kb/s,是指视频文件在单位时间内使用的数据流量,也叫码流率。码流率越大,说明单位时间内取样率越大,数据流精度就越高。 视频帧率:fps,通常说一个视频的 25 帧,指的就是这个视频帧率,即 1秒中会显示 25 帧。帧率越高,给人的视觉就越流畅。
-
24/25 fps :1秒 24/25 桢,一般的电影频率;
-
30/60 fps :1秒 30/60 桢,游戏的帧率,30桢可以接收,60桢会感觉更加流畅逼真。85 fps 以上人眼基本无法察觉出来了,所以更高的帧率在视频里没有太大的意义。
视频分辨率:分辨率就是我们常说的 640480 分辨率、19201080 分辨率,分辨率影响视频图像的大小。 容器/文件(Container/File):即特点格式的多媒体文件,比如 mp4、flv、mkv 等。 媒流体(Stream):表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字母数据,可以使压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器。 数据帧/数据包(Frame/packet):通常,一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。一般情况下:Frame 对于压缩前的数据,Packet 对应压缩后的数据。 编解码器(Codec):以帧为单位实现压缩数据和原始数据之间的相互转换的。 复用(mux):把不同的流按照某种容器的规则放入容器中,这种行为叫做复用(mux)。 解复用(demux):把不同的流从某种容器中解析出来,这种行为叫做解复用。
1.2帧
桢,是视频的一个基本概念,表示一张画面,如翻页动画书中的一页,就是一帧。一个视频就是由许多的桢组成的 ,帧有三种类型:I 帧、P 帧、B 帧, 它们共同构成视频 GOP(Group of Pictures)结构,影响视频的质量和压缩效率 ;
GOP(Group of Pictures)指一组连续的视频帧,通常由一个I帧开头,包含若干P帧和B帧,直到下一个I帧开始新的GOP。其结构如IPBPBP或IBBPBB等,影响视频压缩效率、延迟和容错能力。GOP较大会提高压缩率但增加延迟,较小小利于实时传输但占用更多带宽。
-
I帧(Intra-coded frame):
-
是关键帧,包含完整的图像信息。
-
不依赖其他帧进行解码,可以独立解码和显示。
-
压缩率最低,数据量最大。
-
通常作为视频的起点或场景切换时使用。
-
-
P帧(Predictive-coded frame):
-
是前向预测帧,只存储与前面最近的一个I帧或P帧之间的差异信息。
-
解码时需要参考前面的I/P帧。
-
压缩率较高,数据量小于I帧。
-
-
B帧(Bidirectionally-predictive-coded frame):
-
是双向预测帧,存储的是与前后两个帧的差异信息。
-
解码时需要参考前面和后面的I/P帧。
-
压缩率最高,数据量最小。
-
但处理复杂度也最高。
-
简单总结:
-
I帧 = 独立图像(完整数据)
-
P帧 = 参考前面的帧(部分数据 + 差异)
-
B帧 = 参考前后的帧(最少数据 + 双向差异)
1.3色彩
1.3.1 RGB
RGB:RGB 的颜色模式应该是我们最熟悉的一种,在现在的电子设备中应用广泛。通过 RGB 三种基础色,可以混合出所有的颜色;
RGB 格式目前主要有两类:
-
像素格式,这是我们比较常用的格式,R,G,B 分别分开,用N个位来表示。例如 RGB24格式 中 R 占 8位,G 占 8位,B 占8 位,所以一个像素占 24位。这种格式可以混合生成
256 * 256 * 256 = 16,777,216种颜色,但缺点是占用空间大。 -
索引格式,RGB 的值是一个索引,不是真正的颜色值,例如 RGB 的值 占 1位,那只有两个值 0 跟 1,通常用于黑白颜色,这种情况下 一个像素只占 1位,大大节省了空间。0 跟 1 到底是什么颜色,是通过 索引表(也叫调色板)来定位的,不一定是 黑白,也可以是其他的颜色。所以叫索引格式。
只占 1 位的 RGB 成为 RGB1,还有 RGB4 占 4 位,索引表有 16 种颜色, RGB8 占 8 位,索引表有 256 种颜色。
不需要 索引表/调色板 的 RGB 模式 称为 真彩色。
1.3.1 YUV
视觉心理学研究表明,人的视觉系统对光的感知程度可以用两个属性来描述:亮度(luminance)跟 色度(chrominance), 色度感知 包含两个维度:色调(Hue)和 色饱和度(saturation)。色调是由光波的峰值定义的,描述的是光的颜色。色饱和度是由光波的谱宽定义的,描述的是光的纯度。因此色彩的感知主要有 3个属性:亮度(luminance),色调(Hue)和 色饱和度(saturation)。也就是 YUV 色彩空间,Y 代表 亮度,U代表色调,V代表色饱和度。大量研究实验表明,视觉系统 对 色度 的敏感度 是远小于 亮度的。所以可以对 色度 采用更小的采样率来压缩数据,对亮度采用正常的采样率即可,这样压缩数据不会对视觉体验产生太大的影响。简单来说就是用更少的数据/信息来表达 色度(chroma),用更多的数据/信息来表达 亮度(luminance)。
YUV 也叫 YCbCr,
Cb=Blue−Y Cb 代表 蓝色 色度的分量,是通过 RGB 里面的 B 的值 减去 Y 的值得到的
Cr=Red−Y Cr 代表 红色 色度的分量,是通过 RGB 里面的 R 的值 减去 Y 的值得到的
Cg=Green−Y Cg 代表 绿色色 色度的分量,是通过 RGB 里面的 G 的值 减去 Y 的值得到的。
Y:亮度(Luminance 或 Luma),也称灰度值。除了表示亮度信号外,还含有较多的绿色通道量; U:蓝色通道与亮度的差值; V:红色通道与亮度的差值(U 和 V 表示的则是色度)。
优势和用途: 人眼对亮度敏感,对色度不敏感,因此可以减少 UV 的数据量,人眼无法感知出来,这样可以通过压缩 UV 的分辨率,在不影响观感的前提下,减小视频的体积,主要用于视频信号的压缩、传输和存储。RGB 色彩空间更适合图像采集和显示, YUV 空间用于编码和存储则比较好。在存储和编码之前,RGB 图像要转换为 YUV 图像,而 YUV 图像在 显示之前通常有必要转换回 RGB。
1.3.2 YUV与RGB换算
RGB 到 YUV
Y = 0.299 * R + 0.587 * G + 0.114 * B U = -0.1687 * R - 0.3313 * G + 0.5 * B + 128 V = 0.5 * R - 0.4187 * G - 0.0813 * B + 128YUV 到 RGB
R = Y + 1.402 * (V - 128) G = Y - 0.34414 * (U - 128) - 0.71414 * (V - 128) B = Y + 1.772 * (U - 128)
1.3.3 YUV存储格式
YUV 格式有3大类 :
1,planner :平面格式, 先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。
注意:这里的连续存储,不是一行像素里面连续存储,是整张图片的连续存储,例如 本文的 juren_yuv_444.yuv 图片是 6075kb 大小,那第 1~ 2025kb 都是 Y 的数据, 2026 ~ 4050kb 都是 像素点的 U 数据,以此类推。
2,semi-Planar:半平面的YUV格式,Y分量单独存储,但是UV分量交叉存储。
3,packed :每个像素点的Y,U,V是连续交错存储的。
1.4 编解码
在音视频领域,压缩被称为 encode(编码),因为 压缩这个术语比较通用,字符串文本也能压缩,其他的二进制文件也能压缩。音视频里面的压缩算法 比较有行业自身的特点,所以叫 编码 。YUV420 这些数据,进入 编码系统之后会压缩很多,H264 的压缩比 可以是 102:1 .编码决定如何压缩和还原画面信息,影响画质和文件大小。
常见的压缩标准有以下:
1,JPEG 标准,用于单张图片压缩。标准文档 ISO/IEC 10918-1
2,H.262 标准,用于视频编解码,标准文档 ISO/IEC 13818-2
3,H.263 标准,用于视频编解码。
4,H.264 标准,在 2022年 目前是应用非常广泛的标准。
5,VP9,Google 出的视频编解码标准。
6,AVS,中国的视频压缩标准。
二、音频基本概念
音频数据的承载方式最常用的就是脉冲编码调制,即 PCM。(没有经过压缩的音频数据我们交叫PCM 数据)声音数字化,即转化为数字信号,声音是有自己的振幅和频率波。数字信号并不能连续保存所有时间点的振幅。
奈奎斯特采样定理:为例不失真地恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。
根据以上分析,PCM 的采样步骤分为以下几个步骤: 模拟信号 -> 采样 -> 量化 -> 编码 -> 数字信号
2.1主要概念
采样频率:每秒钟采样的点的个数。常用的采样频率有:
22000 (22kHz) : 无线播。 44100(44.1kHz) : CD音质数字电视,DVD。 48000(48kHz) : 96000 (96kHz) : 蓝光,高清DVD。 192000(192kHz): 蓝光,高清DVD。 前面提到,采样率要大于原声波频率的2倍,人耳能听到的最高频率为20kHZ,所以为例满足人耳的听觉要求,采样率至少为40kHZ,通常为 44.1kHZ,更高的通常为48kHZ。
注意:人耳听觉频率范围 [20HZ,20kHZ]
采样精度 (采样深度):每个“样本点”的大常用的大小为8bit,16bit,24bit。
通道数:单声道,双声道,四声道,5.1声道。
eg:双声道,两个独立的声道存储左右两个方向的声音。四声道:左前 左后 右前 右后。
比特率:每秒传输的 bit 数,单位为:bps(Bit Per Second)。 没有压缩的音频数据的比特率 = 采样频率 * 采样精度 * 通道数。
码率:**压缩后的音频数据的比特率**。常见的码率:
96kbps: FM质量 128-160kbps:一般质量音频。 192kbps:CD质量。 256-320Kbps:高质量音频 码率越大,压缩效率越低,音质越好,压缩后数据越大。 码率 = 音频文件大小/时长。 帧:音频的帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可以简单的认为一帧就是编码后的一张图像。
帧长: 可以指每帧采样数播放的时间,mp3 48k, 1152个采样点,每帧则为24ms; aac则是每是1024个采样点。攒够一帧的数据才送去做编码。 也可以指压缩后每的数据长度。所以讲到帧的时候要注意他适用的场合。 每帧持续时间(秒) = 每采样点数 / 采样频率 (HZ)
2.2 音频编码
如AAC、MP3、PCM、Opus是指对音频信号进行压缩和编码的方式,决定音质和文件大小。一般音频的封装格式(如MP4、MKV、AVI)用于将音频数据与其他数据(如视频、字幕)打包成一个文件。
-
采样位数:涉及到上面提到的振幅量化。波形振幅在模拟信号上也是连续的样本值,而在数字信号中,信号一般时不连续的,所以模拟信号量化以后,采样器会采用一个固定的位数来记录这些振幅,通常由8位、16位、32位。
注意:位数越多,记录的值越准确,还原度越高,但是占用的硬盘空间越大。
存储方式:交错存储,数据以连续帧的方式存放,即先记录帧1左声道样本和右声道样本,在开始第二帧的左右声道样本。非交错模式:首先记录的是一个周期内所有帧的左声道样本,在记录所有右声道样本。
- 编码为AAC的音频可以封装在MP4文件中;
- 编码为PCM的音频可以封装在WAV文件中;
- MP3文件既可以指编码方式,也可指封装格式(通常二者合一)。
三、封装格式
封装格式(也叫容器)就是将已经编码压缩好的视频流、音频流及字幕按照一定的方案放到一个文件中,便于播放软件播放。一般来说,视频文件的后缀名就是它的封装格式。封装的格式不一样,后缀名也就不一样。
3.1常见视封装格式:
AVI、MKV、MPE、MPG、MPEG MP4、WMV、MOV、3GP M2V、M1V、M4V、OGM RM、RMS、RMM、RMVB、IFO SWF、FLV、F4V、 ASF、PMF、XMB、 DIVX、PART DAT、 VOB、M2TS、TS、PS
H264+AAC封装为FLV或MP4是最为流行的模式
四、音视频同步
4.1 音视频同步概念
音视频同步指播放时音频与视频保持时间一致,确保声音与画面匹配。通过时间戳(PTS)对齐音视频数据,播放器按统一时钟基准同步输出,避免音画不同步现象
DTS (Decoding Time Stamp):即解码时间戳,这个时间戳的意义在于告诉播放器该在什么时候解码这一帧的数据。
PTS (Presentation Time Stamp): 即显示时间戳,这个时间戳用来告诉播放器该在什么时候显示这一帧的数据。
当视频流中没有 B 帧时,通常 DTS 和 PTS 的顺序是一致的。但存在B帧的时候两者的顺序就不一致了。
4.2 同步方式
Audio Master:同步视频到音频
Video Master:同步音频到视频
External Clock Master:同步音频和视频到外部时钟。
一般情况下 Audio Master > External Clock Master > Video Master
3336

被折叠的 条评论
为什么被折叠?



