PCM音频文件大小计算
让我们先来计算一下PCM(脉冲编码调制)音频文件的大小。
给定参数:
- 采样率:44,100 Hz (即每秒44,100个样本)
- 位深度:16 bit (每个样本占16位,即2字节)
- 声道数:2 (立体声)
- 时长:假设为1分钟(60秒)
计算公式:
文件大小 = 采样率 × 位深度 × 声道数 × 时长
具体计算:
44,100 samples/s × 16 bits/sample × 2 channels × 60 s
= 44,100 × 16 × 2 × 60 bits
= 84,672,000 bits
// 这里算出来的是bits,我们要先换算成字节,然后kb,再到mb
// 已知每8bit就是一个字节,故:
84,672,000 ÷ 8 ÷ 1024 ÷ 1024 ≈ 10.09 MB
所以,1分钟的44.1kHz、16bit、立体声PCM音频大约为10.09MB。
RGB和YUV视频文件大小计算
在视频处理中,与音频一样,色深指每个颜色通道(R/G/B)用多少比特(bit)来表示。视频默认是8bit色深,也就是1个字节。当然也有每个分量从8bit增加到10bit(但通常存储为16bit对齐,实际占用2字节)。要计算RGB视频的文件大小,还需要涉及到颜色通道的概念:
1. 像素与颜色通道的关系
- 一个像素的颜色 由三种基本分量混合而成:红(R)、绿(G)、蓝(B)。
- 在标准的 RGB 表示中,每个通道(R/G/B)通常用 **1 字节(8 比特)**存储,因此一个像素需要占用:
1 像素 = R(1字节) + G(1字节) + B(1字节) = 3 字节。
2. 计算一帧 1080P 视频的原始大小
- 分辨率 1920×1080 :表示一帧有
1920 × 1080 = 2,073,600 个像素
。 - 每个像素 3 字节 :因此一帧的原始数据量为:
2,073,600 像素 × 3 字节/像素 = 6,220,800 字节 ≈ 6.22 MB
。
3. 为什么需要分开存储 R、G、B?
- 颜色深度:每个通道的 1 字节(256 级)可以表示颜色的强度(如 R=255 表示红色最亮,G=0 表示无绿色)。通过组合三个通道的值,才能得到最终颜色(例如黄色是 R=255, G=255, B=0)。
- 灵活性:分开存储允许单独处理某个颜色通道(如调色时只增强红色)。
下面说说YUV格式的视频文件大小怎么计算:
YUV444、YUV422、YUV420 是视频编码中常用的 色彩子采样(Chroma Subsampling) 格式,目的是通过减少色度(UV)信息的数据量来压缩视频(人眼对亮度更敏感,对色度不敏感)。下面用直观的方式解释它们的区别:
1. YUV 是什么?
YUV 是一种颜色编码系统,将颜色信息分为:
- Y(Luma):亮度分量(黑白信息,最重要)。
- U/V(Chroma):色度分量(颜色信息,可压缩)。
类比:黑白照片(Y) + 彩色滤镜(UV)。
2. 数字的含义(4:4:4、4:2:2、4:2:0)
这些数字表示 色度分量(UV)相对于亮度分量(Y)的采样比例 ,格式为 Y:U:V
。
以 4×2 像素块 一共8个像素为例(每行4像素,共2行):
(1) YUV444(无压缩)
- Y:每个像素独立采样,也就是每个像素都采集一次Y的数据(共 8 个 Y)。
- U/V:每个像素独立采样,也就是每个像素都采集一次UV的数据(共 8 个 U 和 8 个 V)。
- 数据量 :
Y:U:V = 8:8:8
→ 无子采样,等同于 RGB 的原始数据量。
(2) YUV422(横向压缩)
- Y:每个像素独立采样(8 个 Y)。
- U/V :每 横向2像素共用1个UV,也就是2个Y共享一个UV(每行 4 像素 → 2 个 U/V,共 4 个 U 和 4 个 V)。
- 数据量 :
Y:U:V = 8:4:4
→ 色度数据减少一半(相比 444)。
(3) YUV420(横向+纵向压缩)
- Y:每个像素独立采样(8 个 Y)。
- U/V :每 2×2 像素块共用1个UV也就是4个Y共享一个UV(4 像素 → 1 个 U/V,共 2 个 U 和 2 个 V)。
- 数据量 :
Y:U:V = 8:2:2
→ 色度数据减少到 1/4(相比 444)。
3. 直观对比图
格式 | 亮度(Y) | 色度(UV) | 数据量(比例) |
---|---|---|---|
YUV444 | ![Y全采样] | ![UV全采样] | 8:8:8(100%) |
YUV422 | ![Y全采样] | ![UV横向2像素共用1个] | 8:4:4(66%) |
YUV420 | ![Y全采样] | ![UV2x2像素块共用1个] | 8:2:2(50%) |
4. 为什么需要 YUV 子采样?
- 人眼特性:对亮度(Y)敏感,对色度(UV)不敏感。
- 节省带宽 :YUV420 的数据量仅为 RGB 或 YUV444 的 一半,但视觉损失较小。
- 应用场景 :
- YUV444:专业视频编辑、医疗影像(需要无损色度)。
- YUV422:广播电视、高清摄像(平衡质量与带宽)。
- YUV420:流媒体(H.264/H.265)、网络视频(高效压缩)。
5. 计算数据量(以 1080P 为例)
假设每像素的 Y 占用 1 字节,UV 根据子采样变化:
- YUV444 :
1920×1080 × (1 + 1 + 1) = 6,220,800 字节
(同 RGB)。 - YUV422 :
1920×1080 × (1 + 0.5 + 0.5) = 4,147,200 字节
(减少 33%)。 - YUV420 :
1920×1080 × (1 + 0.25 + 0.25) = 3,110,400 字节
(减少 50%)。
6. 扩展知识
- YUV 的其他变种:如 YUV411(更激进压缩)、YUV410(极少用)。
- 与 RGB 的转换:YUV 和 RGB 可以互相转换,但子采样会导致色度信息丢失(不可逆)。
- 现代编码器:H.264/H.265 默认使用 YUV420,进一步通过 DCT、运动补偿等技术压缩。
附:快速记忆口诀
"Y全有,U和V,看数字怎么分"
- 4:2:0 → 四像素 共用一个UV。
- 4:2:2 → 两像素 横向分一个UV。
- 4:4:4 → 像素 谁也不共享,全保留!