HDR to SDR Movie Converter 徽标 HDR to SDR Movie Converter
FFmpeg · libplacebo/Vulkan · HandBrakeCLI

把任何屏幕都变成 HDR 屏幕。简单到连奶奶都能上手。

一款支持 FFmpeg 和 HandBrake、拥有多种曲线选择、并可在 GPU 上运行真正 BT.2390 的桌面色调映射工具。免费包含 10-bit 和 12-bit 输出。

HDR to SDR Movie Converter 应用窗口:左侧为文件、源分析、进度和控制,右侧为转换设置。
为何重要

同一素材 —— 不同结果

电影实际呈现的效果完全取决于处理方式 —— 完全不转换、媒体播放器自带的快速估算,还是真正的 BT.2390 处理。

原始 HDR 视频在不支持 HDR 的显示器上播放 —— 画面发灰、平淡、对比度低。
未转换

原始 HDR,未经转换

在不理解 HDR 的显示器或投影仪上播放未经处理的 HDR 文件 —— PQ/HLG 曲线被当作 SDR 显示,因此画面看起来发灰、平淡且褪色。

同一段 HDR 视频经 VLC 等媒体播放器自动色调映射 —— 高光过曝、色彩偏移。
自动色调映射

由媒体播放器自动转换

像 VLC 这样的播放器会应用自己的快速色调映射,让画面至少能看 —— 通常是一条粗糙的固定曲线,会压缩高光或使色彩偏移,而不是你精心选择曲线后进行的 BT.2390 处理。

同一段 HDR 视频经本应用的 BT.2390 GPU 色调映射正确转换为 SDR —— 高光均衡,色彩准确。
真正的 BT.2390

正确的 BT.2390 色调映射

通过 libplacebo 在 GPU 上运行的真正 ITU-R BT.2390 EETF —— 高光过渡受控、色彩准确,输出为可在任何标准显示器上播放的真正 SDR 文件。

转换引擎

三种色调映射方式。选择适合你硬件的那一种。

同一个源视频,三条真正不同的处理流程。没有任何东西隐藏在“自动”按钮背后 —— 你选择的引擎和曲线就是实际运行的那一个。

CPU · 标准

标准 FFmpeg

经典的 tonemap 滤镜。速度快,适用于任何支持 FFmpeg 的环境,无需 GPU。

  • Hable、Reinhard、Mobius 曲线
  • 专业模式增加 Linear、Gamma、Clip,以及直接的“None”模式
GPU · Vulkan

libplacebo / BT.2390

通过 libplacebo 在 GPU 上运行真正的 ITU-R BT.2390 EETF,也就是大多数 HDR 转 SDR 调色所参照的同一条基准曲线。

  • 默认使用 BT.2390
  • 专业模式解锁 BT.2446A、ST2094-10、ST2094-40(HDR10+)以及自动模式
可选

HandBrakeCLI

通过 HandBrakeCLI 提供的替代编码路径,适用于其自身流程在特定源上表现更好的情况。

  • 相同的分辨率/编码器控制
  • 自有的进度解析,实时显示在“活动”面板中
功能

真正成功转换所需的一切——做得恰到好处。

围绕真实素材在色调映射过程中实际会出错的地方而设计:选错曲线、选错编码器,或某个进程在运行时独占整台机器。

分辨率预设

Source(不缩放)、4K、1440p、1080p、720p 或 480p。缩放以高度为基准,宽度自动计算,因此源的宽高比永远不会被拉伸。

自动分析

选择一个源文件后会立即被读取 —— 传输特性、位深、时长、HDR10+/杜比视界元数据 —— 并针对该文件给出建议曲线。SDR 输出路径会自动填好,将视频文件拖到窗口任意位置的效果与点击“浏览”相同。

实时预览

来自你的源文件的真实解码并经过色调映射的画面,会随设置变化而更新,并带有阴影/高光裁切检测,让破坏细节的曲线在完整编码之前就被发现。可查看全尺寸画面,或直接将画面保存到磁盘。

实时码率估算

随质量、分辨率或编码器的变化自动更新,让意外的 CRF/分辨率组合在你点击“开始”之前就能被发现。

曲线提示

将鼠标悬停在任意色调映射曲线上,即可看到通俗易懂的实际取舍说明 —— 而非营销文案。

编码器选择

CPU 上的 x264/x265,或通过 NVIDIA NVENC、AMD AMF、Apple VideoToolbox 进行硬件编码,格式为 H.264 或 H.265。

10-bit 与 12-bit 输出

免费,无需许可证,无需单独构建版本。10-bit 适用于任何 H.265 编码器(CPU 或硬件);12-bit 通过 CPU 上的 libx265 提供 —— 应用只会显示真正支持所选位深的编码器。

专业模式

开启完整的 CRF/CQ 范围(0–51)、亮度偏移控制,以及额外的色调映射曲线 —— 在你需要之前不会打扰你。

硬件加速解码

FFmpeg 引擎支持 CUDA / DXVA2 / VideoToolbox 解码,让 GPU 同时负责读取和色调映射。

进程优先级与 CPU 核心

效率、均衡或性能模式,外加实时 CPU 核心数限制 —— 两者都在开始时生效,并可在转换运行期间随时调整,让长时间任务不会拖慢你机器上的其他工作。

活动与系统

一个可折叠的实时日志会流式显示真实的 FFmpeg/HandBrake 输出和进度;系统面板会在你开始转换前,报告在你机器上检测到的内容 —— FFmpeg、Vulkan、HandBrakeCLI。

Windows 一键安装

缺失的 FFmpeg 或 HandBrakeCLI 可直接在应用内通过 winget 安装 —— 可在系统面板中操作,也可使用旁边的“快速安装”快捷方式,安装输出会实时显示在“活动”面板中。

HDR to SDR Movie Converter 图标
下载

获取应用

如果你只想直接运行,可下载 Windows 版本;如果你使用 macOS/Linux,或想先阅读代码,可下载源代码。

Windows

Windows (.exe)

单文件版本,无需安装 Python。仍需单独安装 FFmpeg —— 或在应用内通过 winget 安装。

始终为最新版本 · Windows 10/11

源代码

源代码

需要 Python 3.10+ 以及 pip install -r requirements.txt。可在 Windows、macOS 和 Linux 上运行。

MIT 许可 · main 分支

文档

安装与使用指南

该应用是一个单独的 PySide6 脚本。没有安装程序,没有后台服务 —— 你直接运行它,它会直接调用 FFmpeg(以及可选的 HandBrakeCLI)。

系统要求

启动前机器上需要具备的条件。

组件用途
Python 3.10+运行应用本身
PySide6基于 Qt 的界面
FFmpeg标准和 GPU 色调映射引擎
支持 Vulkan 的 GPU + 驱动专门用于 libplacebo/BT.2390 引擎
HandBrakeCLI (可选)HandBrake 引擎
psutil (可选)实时暂停/继续、CPU 核心控制,以及 CPU/GPU 资源统计

安装与运行

三条命令,随后即可看到窗口。

# 1. 获取脚本及其 Python 依赖
pip install PySide6 psutil

# 2. 确认 FFmpeg 已加入 PATH
ffmpeg -version

# 3. 启动
python hdr_to_sdr_gui_qt.py
Windows: 如果找不到 FFmpeg 或 HandBrakeCLI,请打开系统面板,使用“安装缺失项 (winget)”,而不是手动安装。

基本工作流程

从 HDR 源文件到 SDR 输出。

  1. 选择源文件。 任何 FFmpeg 能读取的 HDR 容器 —— 分析会自动运行(传输函数、位深、HDR10+/杜比视界元数据,以及建议的曲线),SDR 输出路径也会自动填好。将文件拖到窗口上与点击“浏览”效果相同。
  2. 选择引擎和曲线。 GPU 上的 BT.2390 是合理的默认选择;如果没有支持 Vulkan 的 GPU,可切换到标准 FFmpeg。将鼠标悬停在任意曲线上可查看其实际取舍。
  3. 设置分辨率、编码器和位深。 将分辨率保留为“Source”以保持原始画面尺寸和宽高比,或选择预设在同一次处理中降低分辨率。
  4. 调整质量,或启用专业模式 以获得完整的 CRF/CQ 范围和亮度偏移。确认前请查看实时预览 —— 它会显示真实的色调映射画面并标出阴影/高光裁切情况 —— 以及实时码率估算。
  5. 转换,并在“活动”面板中查看进度和实时的 FFmpeg/HandBrake 输出。暂停/继续、CPU 核心限制和进程优先级都可以在运行期间随时调整。

选择曲线

以下均为真实、有据可查的 FFmpeg/libplacebo 色调映射选项 —— 没有任何一项是凭空捏造的。

曲线引擎适用场景
BT.2390GPU默认选择 —— 大多数 HDR 转 SDR 调色所参照的基准 EETF
HableCPU电影感高光过渡,无需 GPU
Reinhard / MobiusCPU比 Hable 更柔和的高光过渡替代方案
BT.2446AGPU · Pro面向广播的 BT.2390 替代方案
ST2094-10 / ST2094-40GPU · Pro动态色调映射;ST2094-40 会在存在时使用 HDR10+ 元数据
Linear / Gamma / Clip / NoneCPU · Pro诊断或手动调色用途,不适合日常使用

故障排除

系统面板是第一步 —— 在你把这当作 bug 反馈之前,它会准确告诉你检测到了什么。

  • BT.2390(GPU)选项呈灰色不可用 — 未检测到支持 Vulkan 的设备;请改用标准 FFmpeg 曲线。
  • 缺少 HandBrakeCLI 引擎 — 该引擎是可选的,只有在 PATH 中找到 HandBrakeCLI 后才会出现。
  • 转换过程似乎占用了整台机器 — 将进程优先级降为“效率”。