1. Codec 基础概念:编解码器到底是什么?
做音视频开发这些年,我经常被问到同一个问题:「编解码器不就是个压缩软件吗?」
嗯,这么说也对,但不够准确。今天咱们就把这个基础打扎实。
1.1 什么是编解码器?
编解码器,英文叫 Codec,是 Coder(编码器)和 Decoder(解码器)的合成词。
说白了,它是一套算法,负责两件事:
- 编码:把原始音视频数据压缩成更小的文件或流
- 解码:把压缩后的数据还原成可播放的音视频
我刚开始接触这个领域时,以为编解码器就是某个具体的软件。后来踩了坑才明白——编解码器是算法规范,而实现它的软件叫编码器/解码器。比如 H.264 是规范,x264 是编码器,FFmpeg 里的 libavcodec 是解码器。
核心记忆点: 编解码器 = 压缩/解压缩算法;编码器/解码器 = 算法的具体实现。
1.2 有损压缩 vs 无损压缩
这是选型时第一个要做的决定。我见过不少项目,因为没搞清楚这个区别,后期推倒重来。
| 对比维度 | 有损压缩 | 无损压缩 |
|---|---|---|
| 原理 | 丢弃人眼/人耳不敏感的信息 | 保留全部原始数据 |
| 压缩比 | 高(10:1 ~ 50:1 甚至更高) | 低(2:1 ~ 3:1) |
| 还原质量 | 有损,但感知上可能接近无损 | 完全还原 |
| 典型 Codec | H.264、H.265、AAC、MP3 | FLAC、ALAC、FFV1 |
| 适用场景 | 流媒体、短视频、视频通话 | 归档、专业剪辑、医疗影像 |
我曾经 在一个医疗影像项目中,团队默认用了 H.264 做压缩。结果审核时发现,压缩后的图像丢失了微小的纹理细节——那可是诊断依据。最后全部换成无损压缩,工期延误了两周。记住:有损压缩不可逆,选型前先确认业务对「失真」的容忍度。
1.3 压缩比与码率
这两个概念经常被混用,但它们是不同的东西。
压缩比 = 原始数据大小 / 压缩后数据大小。
比如一段 100MB 的原始视频,压缩后变成 5MB,压缩比就是 20:1。
码率(Bitrate) = 单位时间内传输的数据量,单位是 bps(bit per second)。
码率越高,画质越好,文件也越大。
你想想看,压缩比是个「静态」的比值,而码率是个「动态」的速率。我习惯用这个公式来估算:
文件大小 (MB) = 码率 (Mbps) × 时长 (秒) / 8
举个例子:一段 2 小时的电影,码率 10 Mbps:
文件大小 = 10 × 7200 / 8 = 9000 MB ≈ 8.8 GB
我个人习惯 在项目初期先确定目标码率,再反推压缩比。因为码率直接决定了带宽和存储成本,而压缩比只是个参考值。
1.4 常见 Codec 家族概览
市面上 Codec 很多,但真正常用的就那么几个。我按应用场景给你梳理一下:
视频 Codec
- H.264 (AVC):2003 年发布,至今仍是兼容性最好的 Codec。几乎所有设备都支持。我做的第一个直播项目用的就是它。
- H.265 (HEVC):H.264 的继任者,同等画质下码率降低 50% 左右。但专利授权复杂,部分浏览器不支持。
- AV1:开源、免专利费,压缩率比 H.265 还高 20-30%。但编码速度慢,适合点播场景。
- VP9:Google 主导,YouTube 在用。压缩率介于 H.264 和 H.265 之间。
音频 Codec
- AAC:MP4 的标准音频 Codec,音质好,兼容性广。我一般用它做直播音频。
- MP3:老牌 Codec,兼容性无敌,但效率不如 AAC。
- Opus:开源、低延迟、动态码率范围广。视频通话场景的首选。
- FLAC:无损压缩,适合音乐归档。
为了让你更直观地理解这些 Codec 的关系,我画了一张图:
1.5 选型前的灵魂三问
每次开始一个新项目,我都会问自己三个问题:
- 目标设备是什么? 如果是手机、浏览器,H.264 最稳妥;如果是智能电视、机顶盒,可以考虑 H.265。
- 延迟要求多高? 视频通话需要毫秒级延迟,选 H.264 + Opus;点播可以接受几秒缓冲,用 AV1 省带宽。
- 版权成本能接受吗? H.265 专利费复杂,AV1 和 VP9 免费。商业项目一定要提前算这笔账。
我建议 新手先从 H.264 + AAC 入手。这对组合兼容性最好,踩坑最少。等把基础流程跑通了,再尝试其他 Codec。
好了,这一章的基础概念就聊到这儿。记住:编解码器不是黑魔法,它只是一套聪明的算法——用「丢弃不重要的信息」来换取「更小的体积」。后面的章节,我们会深入每个 Codec 的内部原理和调优技巧。