FFmpeg와 HandBrake를 지원하고, 다양한 커브와 GPU에서의 진짜 BT.2390을 제공하는 데스크톱 톤 매핑 도구입니다. 10비트 및 12비트 출력도 무료로 제공됩니다.
영화가 실제로 어떻게 보이는지는 전적으로 처리 방식에 달려 있습니다 — 전혀 변환하지 않거나, 미디어 플레이어 자체의 빠른 추정치를 쓰거나, 진짜 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+/Dolby Vision 메타데이터 — 그리고 해당 파일에 맞는 커브가 제안됩니다. SDR 출력 경로도 자동으로 채워지며, 동영상 파일을 창 어디에나 끌어다 놓는 것은 "찾아보기"와 동일하게 작동합니다.
설정을 변경할 때마다 업데이트되는, 소스에서 실제로 디코딩되고 톤 매핑된 프레임입니다. 섀도우/하이라이트 클리핑 검사가 함께 제공되어, 디테일을 뭉개는 커브를 전체 인코딩 전에 발견할 수 있습니다. 전체 크기로 보거나 프레임을 바로 디스크에 저장할 수 있습니다.
화질, 해상도, 인코더가 바뀔 때마다 자동으로 업데이트되어, 뜻밖의 CRF/해상도 조합을 "시작"을 누르기 전에 확인할 수 있습니다.
어떤 톤 매핑 커브 위에든 마우스를 올리면 실제 트레이드오프를 쉬운 말로 설명해줍니다 — 마케팅 문구가 아닙니다.
CPU에서 x264/x265, 또는 NVIDIA NVENC, AMD AMF, Apple VideoToolbox를 통한 하드웨어 인코딩(H.264 또는 H.265).
무료이며 라이선스가 필요 없고 별도 빌드도 필요 없습니다. 10비트는 모든 H.265 인코더(CPU 또는 하드웨어)에서 동작하고, 12비트는 CPU의 libx265를 통해 제공됩니다 — 앱은 선택한 비트 심도를 실제로 지원하는 인코더만 표시합니다.
전체 CRF/CQ 범위(0–51), 밝기 오프셋 조절, 추가 톤 매핑 커브를 엽니다 — 필요할 때까지는 눈에 띄지 않습니다.
FFmpeg 백엔드용 CUDA / DXVA2 / VideoToolbox 디코딩으로, GPU가 읽기와 톤 매핑을 모두 처리합니다.
Efficiency, Balanced, 또는 Performance, 그리고 실시간 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 기반 UI |
| 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 | 진단용 또는 수동 등급 조정용 패스로, 일반적인 용도가 아닙니다 |
시스템 패널이 첫 번째로 확인할 곳입니다 — 이것을 버그로 신고하기 전에 정확히 무엇이 감지되었는지 알려줍니다.