数字音视频存储揭秘:如何计算PCM音频与YUV/RGB视频的原始文件大小

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 → 像素 谁也不共享,全保留
相关推荐
LBY_XK3 小时前
前端实现 web获取麦克风权限 录制音频 (需求:ai对话问答)
前端·音视频
SY.ZHOU6 小时前
AAC编解码
音视频·aac
rjszcb6 小时前
rtsp协议之.c++实现,rtsp,rtp协议框架,模拟多路音视频h264,265,aac,数据帧传输,接收(二)
c++·音视频·aac
音视频牛哥10 小时前
四足机器人远程视频与互动控制的全链路方案
机器人·音视频·大牛直播sdk·四足机器人·rtsp播放器·人形机器人·rtmp播放器
aqi0011 小时前
FFmpeg开发笔记(七十五)使用qrencode和quirc对视频画面读写二维码
ffmpeg·音视频·直播·流媒体
猫头虎12 小时前
首个直播流扩散(LSD)AI模型:MirageLSD,它可以实时把任意视频流转换成你的自定义服装风格——虚拟换装新体验
人工智能·计算机视觉·音视频·实时音视频
脑子缺根弦16 小时前
融合优势:SIP 广播对讲联动华为会议 全场景沟通响应提速
华为·音视频·广播对讲系统
肥or胖1 天前
【FFmpeg 快速入门】本地播放器 项目
开发语言·qt·ffmpeg·音视频
DogDaoDao1 天前
GitHub开源轻量级语音模型 Vui:重塑边缘智能语音交互的未来
大模型·github·音视频·交互·vui·语音模型·智能语音