H.265 的招牌是「同画质省一半码率」,实测这一句只兑现了 15%。 不是它不行,是测试画面太简单——画面越复杂、分辨率越高,优势越明显。
前两节都在 H.264 里打转,这一节换编码器。换了编码器,选项名和坑也跟着换。 H.265 的编码工具在 26 课,这里只讲怎么调、值不值得调。
一、实测:省了多少
| 编码 | 耗时 | 文件大小 | 相对 |
|---|---|---|---|
| H.264 | 31 毫秒 | 10.2 KB | 1.00 倍 |
| H.265 | 180 毫秒 | 8.6 KB | 0.85 倍 |
省了 15% 的体积,多花 5.8 倍的编码时间。
「省一半」这个说法在这个样本上没有兑现。原因很清楚:我的测试画面很简单(缓慢移动的斜纹), H.264 已经压得很透,H.265 的先进工具没多少活可干。 画面越复杂、分辨率越高,H.265 的优势越明显——4K 上省三四成是常见的。 所以「H.265 省一半」这句话不能当规格用,得当「最好情况」。
二、选项怎么写
| 参数 | 说明 | 注意 |
|---|---|---|---|
| -c:v libx265 | 选编码器 | 名字和 libx264 同一个位置 |
| -crf 28 | 质量 | 默认 28,比 H.264 的 23 松 |
| -preset medium | 速度 | 档位名和 x264 一样 |
| -x265-params | 私有参数 | 写法是「键=值」冒号分隔 |
| -tag:v hvc1 | 苹果兼容 | 不加 QuickTime 不认 |
-crf 的默认值不一样,这是最容易错的:H.264 默认 23,H.265 默认 28。
拿 23 去压 H.265 会得到「又大又慢」的结果,因为 23 在 H.265 里相当于高质量档。
-tag:v hvc1 是苹果专属坑:MP4 里 hev1 和 hvc1 都是 H.265,
但 QuickTime/Safari 只认 hvc1。给客户交片前记得加。
三、换不换,看四件事
| 因素 | H.264 | H.265 |
|---|---|---|
| 专利与授权 | 相对清楚 | 复杂,多家收费 |
| 浏览器支持 | 全支持 | Chrome 支持,Safari 有限 |
| 老设备解码 | 都能解 | 老 NVR 解不动 |
| 编码成本 | 低 | 高两三倍 |
第三行在监控里是硬门槛:客户用老款 NVR 接新摄像头,选了 H.265 就是黑屏。 所以监控设备普遍支持「双码流 + 双编码」:主码流 H.265 省带宽,子码流 H.264 兼容老客户端。
第一行也别忽略:H.265 的专利池不止一家,商用出货要算清授权费, 这笔账有时候比省下的硬盘钱还多。
四、动手 Demo:H.265 值不值得换
同一份源、同尺寸、同 preset,只换编码器,量体积和耗时。 两个编码器都用 CRF 23——故意用同一个数,好让差距只来自编码器本身。
def run(codec, out):
t0 = time.perf_counter()
c = av.open(out, "w", format="hevc" if codec == "libx265" else "h264")
s = c.add_stream(codec, rate=30)
s.width, s.height, s.pix_fmt = 320, 240, "yuv420p"
s.options = {"crf": "23", "preset": "medium"}
...
return time.perf_counter() - t0, os.path.getsize(out)
实跑输出:
--------------------------------------------------------------------
H.265 值不值得换
--------------------------------------------------------------------
**H.265(HEVC)的招牌是「同画质省一半码率」。这一节实测这句话能兑现多少。**
编码 耗时 文件大小 相对
-----------------------------------------------
H.264 31 毫秒 10.2 KB 1.00 倍
H.265 180 毫秒 8.6 KB 0.85 倍
**省了 15% 的体积,多花 5.8 倍的编码时间。**
**「省一半」这个说法在这个样本上没有兑现**——只省了 15%。
原因很清楚:**我的测试画面很简单**(缓慢移动的斜纹),H.264 已经压得很透,
H.265 的先进工具没多少活可干。
**画面越复杂、分辨率越高,H.265 的优势越明显**——4K 上省三四成是常见的。
**换不换,看四件事:**
因素 H.264 H.265
--------------------------------------------------------
专利与授权 相对清楚 复杂,多家收费
浏览器支持 全支持 Chrome 支持,Safari 有限
老设备解码 都能解 老 NVR 解不动
编码成本 低 高两三倍
**第二行在监控里是硬门槛**:客户用老款 NVR 接新摄像头,选了 H.265 就是黑屏。
**所以监控设备普遍支持「双码流 + 双编码」**:主码流 H.265 省带宽,子码流 H.264 兼容老客户端。
耗时 5.8 倍这个数要留意:这是 240p 小图,1080p 上差距会更大,因为搜索空间随像素增长。 这一节的价值不在「省 15%」,而在「为什么没省一半」——样本决定结论,报结论必须报样本。
30 秒实验
- 把源换成 1280×720 的复杂画面(加噪声),重跑,看省的比例会不会变大。
- 把 H.265 的
-crf改成 28(它自己的默认值),和 H.264 的 23 比,看是不是更接近「同画质」。 - 用
-tag:v hvc1和不加各封一次 MP4,看文件头里 tag 那四个字节。
常见误区
- 以为 H.265 一定能省一半。 简单画面上只省 15%,省一半是「复杂内容 + 高分辨率」的成绩。
- 以为 CRF 23 在两家是一回事。 H.264 默认 23、H.265 默认 28, 同一个数在两边代表的质量不一样。
- 以为封成 MP4 就到处能播。 苹果只认
hvc1,hev1会黑屏。
自测三问(点开对答案)
1. 为什么这次只省了 15%? —— 测试画面是缓慢移动的斜纹,帧间差很小,H.264 已经压得很透,**H.265 的新工具没有发挥空间**。 2. H.265 的 `-crf` 默认值和 H.264 一样吗? —— 不一样,**H.265 默认 28,H.264 默认 23**。用 23 压 H.265 会又大又慢。 3. 监控为什么要「双编码」? —— 老 NVR 解不动 H.265。**主码流用 H.265 省带宽,子码流用 H.264 保兼容**,两路一起发。下一节开始讲原理和 API:解码到底走了哪几步。
- ☐ (本节完,下一节 04.04.01 视频解码过程简介)