如何压缩 HDR 视频而不丢失 HDR
iPhone HDR 片段压缩后发灰、褪色,是因为转换器把 10 位 HDR 画面压成了 8 位,或丢掉了告诉播放器这是 HDR 的标记。从 2026.2.25 版起,选择 H.265、AV1 或 VP9 时,VideoRecompress Studio 会把 HDR10 和 HLG 保持为 10 位,并保留单层 Dolby Vision。选择 H.264 时,它会把 HDR 正确转换为普通 SDR 视频,颜色依然准确。
2026 年 10 月 23 日测量,VideoRecompress Studio 2026.2.27,Ryzen 9 3900X 搭配 RTX 3080,默认质量(23),MP4。片段:30 秒 1080p60,基于 HLG 的 Dolby Vision 8.4,即 iPhone 录制的 HDR 格式,14 Mbit/s:“Test Jellyfin 1080p DV P8.4”,由 Gnattu 提供,CC BY-SA 4.0,来自 Jellyfin test videos。
为什么压缩后的 HDR 视频会发灰
HDR 视频用另一条曲线记录亮度(HDR10 用 PQ,手机和电视用 HLG),每种颜色 10 位,使用更宽的 BT.2020 色域。文件中的标记告诉播放器是哪条曲线。如果转换器写成 8 位,或丢掉这些标记,播放器就会把 HDR 信号当作普通视频显示:平淡、发灰、褪色。只有两种结果是正确的。
VideoRecompress 如何处理 HDR
| 输出 | HDR10 和 HLG | iPhone 的 Dolby Vision |
|---|---|---|
| GPU 上的 H.265 | 保留,10 位 | 去掉 Dolby Vision 层,按 HLG 播放 |
| H.265,软件(CPU) | 保留,10 位 | 保留(MP4 或 MKV,画面尺寸不变) |
| AV1 | 保留,10 位 | 去掉 Dolby Vision 层,按 HLG 播放 |
| VP9 | 保留,10 位(含 HDR10+) | 去掉 Dolby Vision 层,按 HLG 播放 |
| H.264 | 转换为 SDR | 转换为 SDR |
iPhone 把 Dolby Vision 录在 HLG 画面之上,所以即使没有 Dolby Vision 层,文件仍按 HDR 播放。应用中每个文件的那一行会说明保留了什么。勾选“将 HDR 转换为 SDR”,任何编解码器都输出 SDR。防抖也会转换为 SDR,因为它只能处理 8 位视频。
实测:一段 iPhone 格式片段,四种方式
同一片段,默认质量,用命令行(recompress)逐个文件处理;即使编解码器已经相同,recompress 也会重新编码。在应用中,把这个 H.265 片段设为 H.265 目标需要一项实际改动,比如轻度降噪那一行。时间为整个任务的耗时。
用 ffprobe 检查结果:四个 HDR 文件都是 10 位(yuv420p10le),BT.2020 色域,HLG 传输特性(arib-std-b67)。两个 CPU 的 H.265 文件还保留了 Dolby Vision 8.4 记录,全部 1,797 帧都带有 Dolby Vision 元数据。H.264 文件是 8 位 BT.709 SDR。它最大,因为同样的画面 H.264 需要更多数据。
哪种屏幕用哪种编解码器
| 在哪里播放 | 选择 | 结果 |
|---|---|---|
| iPhone、iPad 或 Mac | H.265 (HEVC) | HDR |
| HDR 电视、Plex 或媒体播放器 | H.265 (HEVC),MP4 或 MKV | HDR |
| 上传到 YouTube | H.265 或 AV1 | HDR |
| 带 HDR 屏幕的 Windows 电脑 | H.265 或 AV1 | HDR,需安装 Microsoft Store 中的 HEVC 或 AV1 视频扩展 |
| 旧电视、投影仪、普通屏幕、发给任何人 | H.264 | 颜色正确的 SDR |
| 保留 iPhone 的 Dolby Vision | H.265 (HEVC) 加软件(CPU),MP4 或 MKV,画面尺寸不变 | Dolby Vision |
iPhone 片段本来就是 H.265。要缩小体积又保持 H.265,请加一项实际改动,例如降噪:轻度(见步骤),或在你的屏幕支持时选择 AV1。删除原始文件前,先在要用的屏幕上播放一个结果。
在 VideoRecompress Studio 中的步骤
iPhone 片段本来就是 H.265 (HEVC)。除非你还改了别的设置,应用不会把视频重新编码成它已有的编解码器。只设为 H.265 的 iPhone 片段会被跳过,另存为 MP4 的 .MOV 只会被复制,不会变小。只改质量设置不算改动。
- 选择视频:添加 HDR 片段或整个文件夹。下一步会显示“检测到 HDR 内容。”
- 设置,Codec:iPhone 片段请选择 AV1。HDR10 和 HLG 保持 10 位,Dolby Vision 层会被去掉。对于还不是 H.265 的 HDR 文件,也可以选 H.265 (HEVC)。H.264 输出 SDR。
- 若要改为保留 iPhone 的 Dolby Vision:选择 H.265 (HEVC),把硬件加速设为“软件(CPU)”,在“配置和输出”中打开滤镜,把降噪设为“轻度”。这项改动会让应用重新编码该片段(剪辑时长或改变帧率也算)。不要缩放、裁剪或旋转,否则会去掉 Dolby Vision。
- 配置和输出:容器格式选 MP4 或 MKV,不勾选“将 HDR 转换为 SDR”。只有想要 SDR 文件时才勾选。
- 点击开始重新压缩。每个文件的那一行会说明它的 HDR 怎样处理了。
使用命令行
videorecompress 命令行遵循同样的规则:如果没有其他改动,batch 会跳过已经是目标编解码器的文件。recompress 处理单个文件时仍会重新编码。默认保留 HDR;--hdr sdr 有意转换为 SDR。
保留 HDR10 和 HLG(iPhone 片段已是 H.265,所以用 AV1):
videorecompress batch "D:\iPhone HDR" -o "D:\iPhone HDR\small" --codec av1
同时保留 Dolby Vision(CPU 上的 H.265,以轻度降噪作为改动):
videorecompress batch "D:\iPhone HDR" -o "D:\iPhone HDR\small" --codec h265 --hw-accel software --denoise light
有意转换为 SDR:
videorecompress batch "D:\iPhone HDR" -o "D:\iPhone HDR\sdr" --codec h265 --hdr sdr
每个文件都会输出一行 HDR 信息,例如 HDR: HLG kept (10-bit, bt2020)。使用 --json 时,hdr 字段为 kept 或 tonemapped。
相关文章
常见问题
为什么我的 iPhone HDR 视频压缩后发灰?
转换器把 HDR 画面写成了 8 位视频,或丢掉了 HDR 标记,所以播放器把 HDR 信号当作普通视频显示。请从原始文件重新压缩:要保留 HDR,用 AV1,或用 H.265 并加一项实际改动(如降噪:轻度);要得到正确的 SDR,用 H.264。
压缩 HDR 视频会丢失 HDR 吗?
只要输出保持 10 位并带有 HDR 标记就不会。在 VideoRecompress 中,H.265、AV1 和 VP9 都是如此。我们的测试中,AV1 把一段 50.3 MB 的 iPhone 格式片段压到 14.2 MB,仍按 HLG 10 位播放。
压缩时能保留 Dolby Vision 吗?
单层 Dolby Vision(配置文件 5 和 8,包括 iPhone 视频)可以:选择 H.265 加软件(CPU),MP4 或 MKV,画面尺寸不变,并把降噪设为“轻度”,让已是 H.265 的片段重新编码。在 GPU 上、用 AV1 或 VP9、或缩放时,会去掉 Dolby Vision 层,保留下面的 HDR10 或 HLG 画面。配置文件 5 下面没有画面,请用 CPU 处理这类文件。双层 Dolby Vision(配置文件 7,来自 UHD 蓝光)只保留 HDR10 画面。
如何把 HDR 视频转换为 SDR?
在“配置和输出”中勾选“将 HDR 转换为 SDR”,或在命令行加上 --hdr sdr。任何编解码器都会通过色调映射输出 8 位 BT.709。选择 H.264 时会自动完成。
能对 HDR 视频防抖并保留 HDR 吗?
不能。防抖只处理 8 位视频,所以防抖后的 HDR 片段会转换为颜色正确的 SDR。文件的那一行会注明。