一款支持 FFmpeg 和 HandBrake、拥有多种曲线选择、并可在 GPU 上运行真正 BT.2390 的桌面色调映射工具。免费包含 10-bit 和 12-bit 输出。
电影实际呈现的效果完全取决于处理方式 —— 完全不转换、媒体播放器自带的快速估算,还是真正的 BT.2390 处理。
在不理解 HDR 的显示器或投影仪上播放未经处理的 HDR 文件 —— PQ/HLG 曲线被当作 SDR 显示,因此画面看起来发灰、平淡且褪色。
像 VLC 这样的播放器会应用自己的快速色调映射,让画面至少能看 —— 通常是一条粗糙的固定曲线,会压缩高光或使色彩偏移,而不是你精心选择曲线后进行的 BT.2390 处理。
通过 libplacebo 在 GPU 上运行的真正 ITU-R BT.2390 EETF —— 高光过渡受控、色彩准确,输出为可在任何标准显示器上播放的真正 SDR 文件。
同一个源视频,三条真正不同的处理流程。没有任何东西隐藏在“自动”按钮背后 —— 你选择的引擎和曲线就是实际运行的那一个。
经典的 tonemap 滤镜。速度快,适用于任何支持 FFmpeg 的环境,无需 GPU。
通过 libplacebo 在 GPU 上运行真正的 ITU-R BT.2390 EETF,也就是大多数 HDR 转 SDR 调色所参照的同一条基准曲线。
通过 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 适用于任何 H.265 编码器(CPU 或硬件);12-bit 通过 CPU 上的 libx265 提供 —— 应用只会显示真正支持所选位深的编码器。
开启完整的 CRF/CQ 范围(0–51)、亮度偏移控制,以及额外的色调映射曲线 —— 在你需要之前不会打扰你。
FFmpeg 引擎支持 CUDA / DXVA2 / VideoToolbox 解码,让 GPU 同时负责读取和色调映射。
效率、均衡或性能模式,外加实时 CPU 核心数限制 —— 两者都在开始时生效,并可在转换运行期间随时调整,让长时间任务不会拖慢你机器上的其他工作。
一个可折叠的实时日志会流式显示真实的 FFmpeg/HandBrake 输出和进度;系统面板会在你开始转换前,报告在你机器上检测到的内容 —— FFmpeg、Vulkan、HandBrakeCLI。
缺失的 FFmpeg 或 HandBrakeCLI 可直接在应用内通过 winget 安装 —— 可在系统面板中操作,也可使用旁边的“快速安装”快捷方式,安装输出会实时显示在“活动”面板中。
如果你只想直接运行,可下载 Windows 版本;如果你使用 macOS/Linux,或想先阅读代码,可下载源代码。
单文件版本,无需安装 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
从 HDR 源文件到 SDR 输出。
以下均为真实、有据可查的 FFmpeg/libplacebo 色调映射选项 —— 没有任何一项是凭空捏造的。
| 曲线 | 引擎 | 适用场景 |
|---|---|---|
| BT.2390 | GPU | 默认选择 —— 大多数 HDR 转 SDR 调色所参照的基准 EETF |
| Hable | CPU | 电影感高光过渡,无需 GPU |
| Reinhard / Mobius | CPU | 比 Hable 更柔和的高光过渡替代方案 |
| BT.2446A | GPU · Pro | 面向广播的 BT.2390 替代方案 |
| ST2094-10 / ST2094-40 | GPU · Pro | 动态色调映射;ST2094-40 会在存在时使用 HDR10+ 元数据 |
| Linear / Gamma / Clip / None | CPU · Pro | 诊断或手动调色用途,不适合日常使用 |
系统面板是第一步 —— 在你把这当作 bug 反馈之前,它会准确告诉你检测到了什么。