音视频基础概念:采样率、位深、帧率、分辨率、码率、色彩空间
各位同学,欢迎来到《编解码实战》的第一章。
做音视频开发这么多年,我见过太多人一上来就怼 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,码率翻倍,肉眼根本看不出区别。
知识体系总览
下面这张图,把本章六个概念的关系串起来了。你仔细看一遍,就能理解它们在整个采集到渲染链路中的位置。
你看,音频和视频在采集阶段是两条独立的线,各有各的参数。到了编码器这里,它们被「码率」这个参数统一约束。而色彩空间,则是连接采集端(RGB)和编码器(YUV)的桥梁。
搞懂这六个概念,你就拿到了音视频世界的「六把钥匙」。后面每一章,都会反复用到它们。