🎥 视频压缩、码率与流媒体传输知识总结
本笔记整理了 I/P/B 帧结构、码率计算、文件大小估算、压缩格式对比、推流带宽建议等视频工程常见技术要点。
一、单帧与未压缩视频数据量估算
分辨率:1920×1080(1080p)
色深:8bit × 3通道 = 24bit = 3 字节/像素
每帧大小:
- 1920 × 1080 × 3 ≈ 5.93 MB
未压缩视频大小估算(30fps × 1.5 小时):
- 5.93 MB × 30 × 60 × 90 ≈ 960 GB
二、压缩格式与文件大小对比(1.5 小时)
编码格式 压缩方式 平均码率(估算) 文件大小估算 播放建议带宽
未压缩 无压缩 ~1524 Mbps ~960 GB ≥1.6 Gbps
H.264 有损压缩 8–16 Mbps 6–12 GB ≥20 Mbps
H.265 / HEVC 高效压缩 5–10 Mbps 3–7 GB ≥10 Mbps
AV1 极致压缩 2–6 Mbps 2–4 GB ≥6 Mbps
三、RTSP 推流时的 2K@30fps 带宽需求估算
- H.264:推荐码率 8–16 Mbps → 推荐带宽 12–20 Mbps
- H.265:推荐码率 5–10 Mbps → 推荐带宽 8–15 Mbps
实际带宽 ≈ 码率 × 1.2–1.5,用于冗余、丢包与网络抖动。
四、码率、大小与时间三角关系
核心公式:
`text
- Bitrate (bps) = Size (Bytes) × 8 ÷ Duration (s)
- Size (Bytes) = Bitrate × Duration ÷ 8
- Duration (s) = Size × 8 ÷ Bitrate
`
示例:
- 文件大小:600 MB
- 播放时长:10 分钟 = 600 秒
- 平均码率 ≈ (600 × 1024² × 8) ÷ 600 ≈ 8.39 Mbps
五、码率设定的依据
目标码率 ≠ 简单计算,需参考:
- 分辨率、帧率
- 编码格式效率(H.264 < H.265 < AV1)
- 画面复杂度(动作/纹理丰富 → 提高码率)
- 画质预期目标(高压缩 or 无损)
经验表(1080p@25fps):
画质等级 H.264 推荐码率
高质量 5–8 Mbps
中画质 3–5 Mbps
一般监控 1.5–3 Mbps
六、查看视频码率与类型
使用 MediaInfo:
- Bit rate:视频平均码率
- Bit rate mode:
- Constant → CBR
- Variable → VBR
使用 ffprobe:
bash ffprobe -v error -selectstreams v -showentries stream=bitrate -of default=noprintwrappers=1 input.mp4
七、I帧 / P帧 / B帧 解码与播放顺序详解
- I帧:关键帧,独立解码
- P帧:预测帧,参考前 I/P帧
- B帧:双向预测帧,需前后参考帧
示例播放顺序:
播放顺序:I - B - B - P - B - B - P 解码顺序:I → P4 → B2/B3 → P7 → B5/B6
解码依赖图:
解码顺序 ┌──────────────┐ ↓ ↓ [I] → [P4] [P7] ↑ ↑ ↑ [B2] [B3] [B5][B6] └────┴──────────┘
八、编码参数简要说明(ffmpeg)
- -g:GOP 长度(控制 I 帧间隔)
- -bf:B 帧数量(B 帧越多压缩越好,但延迟上升)
- -refs:参考帧数量
- -b:v:目标码率(可配合 CBR/VBR/CRF)