音视频基础概念:采样率、位深、帧率、分辨率、码率、色彩空间

各位同学,欢迎来到《编解码实战》的第一章。

做音视频开发这么多年,我见过太多人一上来就怼 FFmpeg 命令行,结果遇到花屏、音画不同步、文件体积爆炸,完全摸不着头脑。说白了,根子都在基础概念上没扎牢。

这一章,咱们就把几个最核心的「砖块」码清楚。你搞懂了它们,后面学编码、封装、推流,就是一马平川的事。

1. 采样率(Sample Rate)—— 声音的「快门」

音频是连续的模拟信号,计算机没法直接存。得每隔一小段时间「咔嚓」拍一张快照,把当时的振幅记下来。这个咔嚓的频率,就是采样率。

核心公式:采样率 = 每秒采集的样本点数,单位 Hz(赫兹)。

举个例子,44.1kHz 就是每秒采集 44100 个点。为什么是 44.1k?因为人耳能听到的频率上限大约是 20kHz,根据奈奎斯特定理,采样率至少要是信号最高频率的两倍,才能无失真还原。44.1k 刚好覆盖 22.05kHz,留了点余量。

常见采样率:

采样率 典型场景
8 kHz 电话语音
16 kHz VoIP / 语音识别
44.1 kHz CD 音质 / 音乐
48 kHz 电影 / 视频制作
96 kHz / 192 kHz 高解析音频 / 录音棚

我的经验:做视频会议项目时,我习惯用 16kHz 采样率。人声频段基本都在 8kHz 以内,16k 足够清晰,还能省带宽。别盲目上 48k,那是给音乐和电影准备的。

2. 位深(Bit Depth)—— 声音的「精度」

采样率决定了时间上的精细度,位深则决定了振幅上的精细度。说白了,就是每个样本点用多少比特来存。

位深越大,动态范围越宽,声音层次越丰富。

  • 8-bit:256 级量化,噪声大,基本淘汰。
  • 16-bit:65536 级,CD 标准,动态范围 96dB。
  • 24-bit:1677 万级,录音棚常用,动态范围 144dB。
  • 32-bit float:浮点表示,后期处理不怕爆音。

避坑指南:我曾经在做一个直播项目时,采集端用了 16-bit,但编码器配置成了 24-bit。结果 FFmpeg 自动做了零填充,文件体积大了 50%,音质没任何提升。记住:采集、处理、编码的位深要保持一致,或者用 32-bit float 做中间处理,最后再 dither 到目标位深。

3. 帧率(Frame Rate)—— 视频的「采样率」

视频说白了就是快速翻动一系列静态图片。每秒翻多少张,就是帧率,单位 fps(frames per second)。

帧率越高,运动越流畅。但数据量也直线上升。

帧率 典型场景
24 fps 电影工业标准
25 fps PAL 制式电视(中国、欧洲)
30 fps NTSC 制式电视(北美、日本)
50 / 60 fps 体育直播、游戏录制
120 / 240 fps 慢动作拍摄

我的习惯:做短视频 App 时,我建议采集用 30fps,编码用 30fps。别搞 60fps 采集然后降帧到 30fps,白白浪费了采集端的功耗和带宽。除非你做慢动作回放,否则 30fps 对人眼来说已经足够流畅。

4. 分辨率(Resolution)—— 画面的「精细度」

分辨率就是一张图像里有多少个像素点。通常用「宽 × 高」表示,比如 1920×1080。

分辨率越高,细节越丰富,但数据量也越大。

常见的分辨率梯队:

  • SD(标清):640×480 / 720×576
  • HD(高清):1280×720(720p)
  • Full HD(全高清):1920×1080(1080p)
  • UHD(超高清):3840×2160(4K)
  • 8K:7680×4320

注意:分辨率不是越高越好。在带宽有限的情况下,高分辨率 + 低码率 = 满屏马赛克。我宁愿用 720p + 合理码率,也不用 1080p + 惨不忍睹的压缩。

5. 码率(Bitrate)—— 数据的「流量」

码率就是单位时间内传输的数据量,单位是 bps(bits per second)。

码率 = 数据量 / 时间。它直接决定了视频的清晰度和文件大小。

码率有两种模式:

  • CBR(固定码率):全程保持恒定,适合直播、实时通信。
  • VBR(可变码率):根据画面复杂度动态调整,简单场景省码率,复杂场景多给码率。适合离线存储。

常见视频码率参考(H.264 编码):

分辨率 推荐码率
480p 500 - 1000 kbps
720p 1500 - 4000 kbps
1080p 4000 - 8000 kbps
4K 15000 - 35000 kbps

我曾经踩过的坑:做移动端直播时,我一开始用了 1080p + 2Mbps 码率。结果在弱网环境下,画面卡成幻灯片,用户全跑了。后来我改成自适应码率:根据网络状况动态切换 720p/1.5Mbps 和 480p/800kbps,体验好了很多。记住:码率要跟网络带宽匹配,别贪心。

6. 色彩空间(Color Space)—— 颜色的「坐标系」

色彩空间定义了如何用数字来表示颜色。不同的色彩空间有不同的色域范围和用途。

最常用的几个:

  • RGB:红绿蓝三通道,显示器直接使用。但三个通道相关性高,不适合压缩。
  • YUV(YCbCr):亮度(Y)+ 色度(Cb/Cr)。人眼对亮度敏感,对色度不敏感。所以视频编码通常对色度进行下采样,比如 4:2:0,能省一半数据。
  • HSV / HSL:色相、饱和度、明度。常用于图像处理,编解码很少用。

关键点:YUV 是视频编解码的基石。你看到的 H.264、H.265、VP9、AV1,内部处理的都是 YUV 数据。采集端出来的 RGB 必须先转成 YUV,才能送进编码器。

YUV 采样格式对比:

格式 描述 数据量(相对)
4:4:4 每个像素都有完整的 Y、Cb、Cr 100%
4:2:2 水平方向每 2 个像素共享一组 Cb/Cr 66%
4:2:0 水平和垂直方向每 4 个像素共享一组 Cb/Cr 50%

我的建议:除非你做专业调色或医疗影像,否则视频项目一律用 YUV 4:2:0。这是所有编码器的默认配置,兼容性最好,效率最高。别为了那点理论上的色彩精度去用 4:4:4,码率翻倍,肉眼根本看不出区别。

知识体系总览

下面这张图,把本章六个概念的关系串起来了。你仔细看一遍,就能理解它们在整个采集到渲染链路中的位置。

音视频基础概念关系图 音视频基础概念 · 全链路关系图 音频域 采样率 (Hz) 位深 (bit) 采样率 × 位深 × 声道数 = 原始码率 视频域 分辨率 (像素) 帧率 (fps) 分辨率 × 帧率 × 位深 × 3 = 原始码率 编码器核心参数:码率 (bps) CBR / VBR · 决定文件大小与画质 色彩空间:RGB → YUV (4:2:0 / 4:2:2 / 4:4:4) 采集端:RGB → YUV 转换 → 编码器(按码率约束压缩)→ 封装 → 传输 渲染端:解封装 → 解码器 → YUV → RGB → 显示

你看,音频和视频在采集阶段是两条独立的线,各有各的参数。到了编码器这里,它们被「码率」这个参数统一约束。而色彩空间,则是连接采集端(RGB)和编码器(YUV)的桥梁。

搞懂这六个概念,你就拿到了音视频世界的「六把钥匙」。后面每一章,都会反复用到它们。