文章目录
- 多媒体常用概念
- 码率
- 分辨率
- 帧率
- 视频帧
- 时间戳
- 色彩模式
- RGB
- YUV
- YUV422
- YUV420
- RGB和和YUV的比较的比较
多媒体常用概念
码率
码率指单位时间内传送比特的数目。单位为比特/秒(bit/s或bps)、千比特/秒(kbit/s或kbps,k=1000)或兆比特/秒(Mbps,M=1000000)。
码率越高,音视频的质量就越好,画质就越清晰,同时编码后的文件就越大
分辨率
这里的分辨率指画面的分辨率,也即画面所带的像素,一般是用图片的长(像素)宽(像素)表示,比如长1920个像素,宽1080个像素,分辨率就是19201080
通常说的1080P则是一种显示格式。i是interlace,隔行的意思,P是progressive,逐行的意思。1080P就是1920*1080的分辨率,逐行显示。
帧率
帧率(FPS)是指每秒钟显示的帧的数量,比如帧率25,是指一秒钟显示25帧。
帧率影响画面流畅度:帧率越大,画面越流畅;帧率越小,画面越不连贯。
一般帧率要大于16,因为视觉残留的原因,人眼才会感觉到画面连贯。
视频帧
- I帧:即Intra-coded picture,帧内编码图像帧,通常是每个 GOP 的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧表示关键帧,单独的一个I帧就能重构完整的图像。
- P帧:即Predictive-coded Picture,前向预测编码图像帧。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
- B帧:即Bidirectionally predicted picture,双向预测编码图像帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。
B帧的压缩比高,但是要求缓存前后帧,解码比较费CPU。同时,B帧要参考前后帧,所以丢帧也比较麻烦。因此实时流一般都不输出B帧。 - GOP:即Group of picture(图像组),指两个I帧之间的一组图片。包含第一个I帧,不包括第二个I帧
- IDR:一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像(在H264中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流)。
时间戳
- DTS,即解码时间戳,用于指示解码器什么时间解码当前帧
- PTS,即显示时间戳,用于指示播放器什么时候显示当前帧。
对于没有B帧的视频,PTS等于DTS;而对于有B帧的视频,I帧的PTS等于DTS,P帧的PTS > DTS,B帧的PTS < DTS
色彩模式
RGB
RGB是一种常用的色彩模式。R表示红色,G表示绿色,B表示蓝色。使用RGB三种原色混合,可以得到其他颜色值。而通常说的ARGB就是RGB的基础上,加一个透明度。
RGB中分为很多种:
- RGB888:这是标准的RGB模式,分别是8位R,8位G,8位B表示。
- RGB555:RGB555是一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。
- RGB565:RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。
- ARGB8888:这是RGB24的基础上增加了8位的透明度A,总共有32位。
YUV
YUV是一种颜色编码方法。
- Y:用于表示明亮度(Luminance或Luma)
- U: 用于表示色度(Chrominance或Chroma)
- V:用于表示色度(Chrominance或Chroma)
Y是图片的总体轮廓(黑白图像),而U和V则用于描述色彩颜色和颜色饱和度。
YUV有packed(打包)和 planar(平面)两种存储方式。
- packed :packed格式是先连续存储所有的Y分量,然后依次交叉储存U、V分量;
- planar:planar格式也会先连续存储所有的Y分量,但planar会先连续存储U分量的数据,再连续存储V分量的数据,或者先连续存储V分量的数据,再连续存储U分量的数据;
每种YUV类型都会有多种存储方式,下面介绍一下常用的YUV422和YUV420的存储方式
YUV422
- YU16:也叫I422或YUV422P,每两个Y分量共用一个U分量和一个V分量,以planar方式进行存储,先连续储存Y分量,再连续存储U分量,最后连续储存V分量。
- YV16:也叫I422或YUV422P,每两个Y分量共用一个U分量和一个V分量,以planar方式进行存储,先连续储存Y分量,再连续存储V分量,最后连续储存U分量。
- NV16:也叫YUV422SP,每两个Y分量共用一个U分量和一个V分量,以packed方式进行存储,先连续储存Y分量,再以U、V的顺序交叉存储U分量和Y分量。
- NV61:也叫YUV422SP,每两个Y分量共用一个U分量和一个V分量,以packed方式进行存储,先连续储存Y分量,再以V、U的顺序交叉存储U分量和Y分量。
YUV420
- YU12:也叫I420或YUV420P,每四个Y分量共用一个U分量和一个V分量,以planar方式进行存储,先连续储存Y分量,再连续存储U分量,最后连续储存V分量。
- YV12:也叫I420或YUV420P,每四个Y分量共用一个U分量和一个V分量,以planar方式进行存储,先连续储存Y分量,再连续存储V分量,最后连续储存U分量。
- NV12:也叫YUV420SP,每四个Y分量共用一个U分量和一个V分量,以packed方式进行存储,先连续储存Y分量,再以U、V的顺序交叉存储U分量和Y分量。
- NV21:也叫YUV422SP,每四个Y分量共用一个U分量和一个V分量,以packed方式进行存储,先连续储存Y分量,再以V、U的顺序交叉存储U分量和Y分量。
RGB和和YUV的比较的比较
- RGB:
- 自然界中所有的颜色都可以通过设置RGB的分量来呈现出来,ARGB8888支持的颜色有256256256=167772162
- RGB广泛应用于计算机和电视等输出设备
- RGB的三个分量有相关性,不能单独进行编码,压缩比低
- RGB的视频数据量大
- YUV:
- YUV编码除了YUV444,其他的格式占用的存储比RGB小
- YUV更易于压缩编码和传输
- YUV与RGB之间是无损转换
- YUV广泛用于数字电视和视频处理
总结:图像的采集和显示使用RGB,但是压缩和传输使用YUV