【个人笔记】【ffmpeg】 - 【音视频基础】 - 视频图像基础(一):了解图像基础

2024-01-09 10:25:32

在这里插入图片描述

如图所示,这是一个视频文件的大致组成部分。

基础

像素(pixel):一张图片是以多个像素点组成的,一个像素点表示一个颜色
分辨率: 指一张图片用了多少像素,例如:1920x1080(1080p),指横向1920个像素,竖向1080个像素。
帧率(fps): 指视频一秒多少张图片,例如fps=30,代表一秒播放30张图片

图片

平时常见的图片后缀有 PNG,JPG 等,而这只是指这个图片的压缩格式,并非图片原始内容。

例如一个图片色彩格式为 RGB24, 尺寸为 1920x1080 的图片,计算其内存大小:1920x1080x24/3/1024/1024 ≈ 6MB,但平常这么一张图片一般也就2-3MB以下,所以这就需要用到图片压缩(PNG,JPG)

视频

视频流也就是多个图片快速切换而成,假设60帧的视频,使用RGB24 格式的图片,则一分钟的内存大小为 : 6MB x 60 x 60= 21600 MB/s ≈ 21GB/s,这是非常大的,所以这就需要用到视频编码(h264,h265…)

色彩格式

常见的色彩格式有两种:RGBYUVRGB 常用于图片展示, YUV 常用于视频内容

RGB

RGB

分别指 : 红 绿 蓝 三原色,所有颜色都可以用这三个颜色以一定比例调制而成

位深

指一个原色所用的 bit 数,常见的为 8 位深,表示一个原色用 8bit 表示,8bit 及 256 位,可以表示 256 种颜色。所以RGB24 = 256x256x256 = 16,777,216 = 一千六百万种颜色
还有10位深,表示一个原色用10bit表示,8bit及1024位。所以 RGB30 = 1024x1024x1024 = 1,073,741,824 = 十亿种颜色
所以位深越大,表示的色彩越多,图片效果越好

alpha 通道

除了常见的RGB,还有多的一个ARGB,A通道表示透明度

像素

一个像素代表一个颜色,一个颜色由RGB组成,R G B一个原色分别占用8bit,所以一个像素就占用RGB24 = 24bit = 3byte

存储排列

RGB24在二进制文件中排列就是以R G B这样排列

在这里插入图片描述

BGR24,ARGB,ABGR,RBGA,BGRA都是如此,只是每个像素里面的位置换一下

YUV

YUV

YUV 颜色编码采用的是 明亮度色度 来指定像素的颜色。其中,Y 表示明亮度(Luminance、Luma),而 U 和 V 表示色度(Chrominance、Chroma)。
适配原来的黑白电视,黑白电视只有Y分量,而彩色电视就有YUV三分量

格式

Y U V 每个分量都占一个字节
常见的格式有三种,YUV444,YUV422,YUV420(最常用)
YUV444:一个像素有一个Y,一个U,一个V,所以Y:U:V = 1:1:1 ,一个像素大小为 3x3byte = 3byte
YUV422:一个像素有一个Y,每两个像素公共用一个U和一个V,所以 Y:U:V = 2:1:1,一个像素大小为 1 + (1/2) + (1/2) = 2byte
YUV420:一个像素有一个Y,每四个像素公共用一个U和一个V,所以 Y:U:V = 4:1:1,一个像素大小为 1 + (1/4) + (1/4) = 1.5byte

存储排列

有两种排列方式大类:planar和packed

planar(常用):先存储所有的Y,再存储所有的U,最后存储所有的V
packed:每个YUV交替存储(与RGB存储方式一致)
在这里插入图片描述
对于YUV422和YUV420,又分两类排列,YUV420P(常用)和YUV420SP

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_52570673/article/details/135466727
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。