如何计算 PCM 音频与 YUV/RGB 原始视频文件大小?
引言
在音视频开发中,文件大小往往是最直观的性能指标之一。开发者在评估 网络带宽、存储空间、内存占用、缓存延迟 时,都需要准确计算音视频的 原始数据大小。
尤其在使用 大牛直播SDK 进行推流、拉流、录像、截图等功能时,如果对 PCM 音频、YUV/RGB 视频 的原始体量没有清晰概念,就很容易出现以下问题:
-
缓存设计不足,导致播放器掉帧或推流端积压。
-
存储规划不合理,录像文件空间不足。
-
带宽估算不准确,导致公网推流/播放卡顿。
本文将详细解析 PCM 音频 与 YUV/RGB 视频 的大小计算公式,并结合大牛直播SDK的实际场景,给出应用建议。
一、PCM 音频文件大小计算公式
PCM(Pulse Code Modulation)是未压缩的原始音频数据,广泛用于采集与解码环节。
公式:
Size=采样率×采样位深÷8×声道数×时长(秒)
-
采样率(Sample Rate):常见 44100 Hz、48000 Hz。
-
采样位深(Bit Depth):常见 16bit、24bit、32bit。
-
声道数(Channels):单声道=1,立体声=2。
-
时长:单位为秒。
示例:
-
采样率 = 48000 Hz
-
位深 = 16 bit
-
声道 = 2
-
时长 = 60 秒
计算:
48000×16÷8×2×60=55,296,000 字节≈52.7 MB
在大牛直播SDK中,如果录制一路 48kHz 立体声 PCM 音频,1 分钟原始数据大约就是 52.7 MB,这也是评估录音缓存和文件落盘大小的关键依据。C
二、YUV 视频文件大小计算公式
YUV 是视频最常用的原始数据格式之一,常见采样方式为 YUV420、YUV422、YUV444。
以 YUV420P 为例,大小计算公式如下:
Size=分辨率宽×分辨率高×1.5
示例:
-
分辨率:1920 × 1080 (Full HD)
-
格式:YUV420P
-
帧率:30 fps
-
时长:60 秒
单帧大小:
1920×1080×1.5=3,110,400 字节≈3 MB
一分钟大小:
3 MB×30×60=5400 MB≈5.27 GB
这意味着,一路 1080P@30fps 的原始 YUV 数据,在 1 分钟内就会产生 5GB+ 的数据量。
三、RGB 视频文件大小计算公式
RGB 一般为 RGB24(3 字节/像素) 或 RGBA32(4 字节/像素)。
公式:
Size=分辨率宽×分辨率高×每像素字节数
示例:
-
分辨率:1920 × 1080
-
格式:RGB24 (3 字节/像素)
-
帧率:30 fps
-
时长:60 秒
单帧大小:
1920×1080×3=6,220,800 字节≈6 MB
一分钟大小:
6 MB×30×60=10,800 MB≈10.3 GB
相比 YUV420,RGB24 的原始数据量几乎 翻倍,这也是为什么视频传输与存储基本不会使用 RGB 原始数据。
四、结合大牛直播SDK的实际应用场景
在大牛直播SDK的模块体系中,原始数据大小的计算有三个关键应用场景:
-
推流端(Publisher)缓存与带宽评估
-
例如,SDK 采集麦克风 PCM、摄像头 YUV 后再编码推流。
-
在编码前,需要确保环形缓冲区足够容纳至少 1–2 秒原始数据,否则会导致音画不同步或丢帧。
-
-
播放器(Player)解码与渲染
-
播放端解码后会得到 PCM + YUV 原始数据。
-
SDK 内部会计算解码帧缓存大小,避免内存峰值溢出。
-
例如,1080P@30fps 的播放器,一次缓存 1 秒原始数据,就可能需要 5GB 内存空间,因此 SDK 会通过 零拷贝 + GPU 纹理渲染 方式减少内存占用。
-
-
录像与截图模块
-
录像若采用原始 YUV/PCM 存储,文件会极度膨胀。
-
因此 SDK 默认采用 H.264/H.265 + AAC 编码格式,大幅降低文件大小。
-
但在某些场景(AI 分析 / 调试),开发者可能需要直接获取原始 PCM/YUV 文件,此时就需要依赖上述计算公式提前预估文件大小。
-
五、总结
-
PCM 音频大小取决于采样率、位深、声道数与时长。
-
YUV 视频大小主要由分辨率、采样格式与帧率决定。
-
RGB 视频大小最直观,但体量更大,通常只在显存渲染中保留。
-
在 大牛直播SDK 的推流、播放、录像模块中,准确预估原始文件大小对于缓存设计、带宽规划与系统稳定性至关重要。
最终,理解这些公式不仅能帮助开发者更好地控制成本,还能在项目工程化中做出最优设计。
📎 CSDN官方博客:音视频牛哥-CSDN博客